2017-12-21 13 views
0

Ich habe eine gespeicherte Prozedur in einer MSSQL-Datenbank, die Daten aus einer Ansicht in einem Verbindungsserver verwendet. Ich muss die Informationen über die Spalten und ihren Datentyp dieser Ansicht abrufen, die in der gespeicherten Prozedur verwendet werden.Tsql wie bekomme ich die Spalten in einer gespeicherten Prozedur für eine Ansicht in Verbindungsserver verwendet

Ich habe schon versucht, diese aber nicht funktioniert:

SELECT DatabaseName = Isnull(referenced_database_name, Db_name()), 
     StoredProcedureName = 'spr_rpt_CustomerSurvey', 
     SO.objecttype, 
     ObjectName = referenced_entity_name, 
     ColumnName = referenced_minor_name, 
     OrdinalPosition = referenced_minor_id 
FROM sys.Dm_sql_referenced_entities('[dbo].[spr_rpt_CustomerSurvey]', 'OBJECT' 
     ) R 
     CROSS apply (SELECT ObjectType = (CASE type_desc 
              WHEN 'VIEW' THEN 'View' 
              WHEN 'USER_TABLE'THEN'Table' 
              END) 
        FROM sys.objects 
        WHERE object_id = R.referenced_id) SO 
WHERE referenced_minor_name IS NOT NULL 

Einige Idee ??? Danke dir.

Antwort

0

Ich habe nie versucht, sp_describe_first_result_set einen Verbindungsserver, könnte allerdings arbeiten ...

Eine weitere Option SELECT TOP 1 * INTO SomeTable FROM YourView;

ist Dies erzeugt eine neue Tabelle „Sometable“, wo das Ergebnis des Blicks in geschrieben. Jetzt können Sie Spalten und Typen dieser Tabelle überprüfen.

Ist der Verbindungsserver auch ein SQL RDBMS? Die meisten SQL-RDBMS Support-Anfragen gegen INFORMATION_SCHEMA, in Ihrem Fall gegen INFORMATION_SCHEMA.COLUMNS und sich bewusst sein, dass der Name der Ansicht wird unter TABLE_NAME ziemlich wahrscheinlich ... kann

0

Ansicht Spalten in

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'view name' 

TVF Spalten gefunden werden gefunden werden kann in

SELECT * FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS WHERE TABLE_NAME = 'view name' 

gefunden werden Wenn die Ansicht auf einem Verbindungsserver ist, werden Sie die INFORMATION_SCHEMA.COLUMNS aus dem verknüpften Server

verwenden müssen
SELECT * FROM [linked server].[database name].INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'view name' 
Verwandte Themen