我想从 .NET 代码分析 SQL Server 存储过程,以检索它返回的数据/列的元数据(不是 OUTPUT 参数)。就像您在 DataSet i VisualStudio 上拖放 sp 时一样,它会自动生成列。对于我正在测试的一些代码生成,它可能对我有用。
这些过程包含简单的选择语句,如 SELECT a,b FROM c,我想获取关于 a 和 b 的元数据。
我想从 .NET 代码分析 SQL Server 存储过程,以检索它返回的数据/列的元数据(不是 OUTPUT 参数)。就像您在 DataSet i VisualStudio 上拖放 sp 时一样,它会自动生成列。对于我正在测试的一些代码生成,它可能对我有用。
这些过程包含简单的选择语句,如 SELECT a,b FROM c,我想获取关于 a 和 b 的元数据。
您可以使用SET FMTONLY ON
(并执行它) - 但这有点命中注定。它不涵盖所有场景(分支等) - 并且仍然可以执行一些代码(扩展存储过程等)。
或者-使用表值函数(udfs)-它们具有更丰富/更正式的元数据。
在 SQL Server 2012 /Denali 中,您可以使用sys.dm_exec_describe_first_result_set_for_object
.
这将返回有关过程中第一个结果集的信息(只要所有代码路径都返回此结果集)