我在mssql数据库中有一个存储过程,它使用链接服务器中视图的数据。 我需要检索有关存储过程中使用的此视图的列及其数据类型的信息。
我试过这个但没有工作:
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
有些想法??? 谢谢你。
答案 0 :(得分:0)
我从来没有对链接服务器尝试sp_describe_first_result_set
,但可能会工作......
另一个选项是SELECT TOP 1 * INTO SomeTable FROM YourView;
这将创建一个新表" SomeTable"视图的结果写入的位置。现在,您可以检查此表的列和类型。
链接服务器也是SQL RDBMS吗?对于INFORMATION_SCHEMA
,大多数SQL RDBMS支持对INFORMATION_SCHEMA.COLUMNS
的查询,并且请注意,视图的名称很可能会在TABLE_NAME
下找到...
答案 1 :(得分:0)
可以在
中找到查看列SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'view name'
可以在
中找到TVF列SELECT * FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS WHERE TABLE_NAME = 'view name'
如果视图位于链接服务器上,则需要使用链接服务器中的INFORMATION_SCHEMA.COLUMNS
SELECT * FROM [linked server].[database name].INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'view name'