我有一个工具可以通过这样做来获取有关存储过程的元数据:
SET NO_BROWSETABLE ON;
SET FMTONLY ON;
EXEC {ProcName} {ProcParams}
传递proc名称和虚拟(null)参数。
我将其加载到数据表中并调用GetSchemaTable
以确定生成的列名和数据类型。这非常有效。
但是我注意到没有任何方法可以告诉每个数据库 table 是哪一个来源,我也需要这个用于我的应用程序。有没有办法做到这一点?
(我也不依赖于以这种方式获取元数据,所以我愿意完全以不同的方式完成这些建议。)
答案 0 :(得分:0)
您可以尝试sys.dm_exec_describe_first_result_set获取有关结果集的所有元数据。适用于 SQL Server 2012 + 。
<强> SQLFiddleDemo 强>
DECLARE @tsql NVARCHAR(MAX) =
N'select a.PartId , a.PartName , b.GroupName
from Parts as a inner join Groups as b
on a.GroupRef = b.GroupId';
SELECT name AS [Columns]
FROM sys.dm_exec_describe_first_result_set(@tsql, NULL, 1)
同样适用于:
SELECT *
FROM sys.dm_exec_describe_first_result_set(N'EXEC dbo.procedure_name', NULL, 1);
请注意,存在限制more info。