Tsql如何在链接服务器中获取存储过程中使用的列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tsql如何在链接服务器中获取存储过程中使用的列相关的知识,希望对你有一定的参考价值。
我在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
一些想法???谢谢。
答案
我从来没有尝试过针对链接服务器的sp_describe_first_result_set
,可能会工作...
另一种选择是SELECT TOP 1 * INTO SomeTable FROM YourView;
这将创建一个新表“SomeTable”,其中写入视图的结果。现在,您可以检查此表的列和类型。
链接服务器也是SQL RDBMS吗?大多数SQL RDBMS支持针对INFORMATION_SCHEMA
的查询,在你的情况下针对INFORMATION_SCHEMA.COLUMNS
并且要注意,视图的名称很可能在TABLE_NAME
下找到...
另一答案
查看列可以在中找到
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'
以上是关于Tsql如何在链接服务器中获取存储过程中使用的列的主要内容,如果未能解决你的问题,请参考以下文章