TSQL动态确定SP/函数的参数列表

TSQL动态确定SP/函数的参数列表,sql,tsql,stored-procedures,parameters,Sql,Tsql,Stored Procedures,Parameters,我想编写一个通用日志,将其剪切到存储过程集合中。我写这篇文章是为了定量地衡量我们的前端用户体验,因为我知道前端软件使用哪些SP以及它们是如何使用的。在我们开始性能调试之前,我想用它来收集基线,然后展示调试的结果 我可以从@PROCID动态提取对象名,但我无法确定传递的所有参数及其值。有人知道这是否可行吗? 编辑:将我的回答标记为结束此问题的答案。看来扩展事件对性能的影响最小,但是我不确定最小分析和扩展事件之间是否有实质性的区别。也许是为了一个雨天。 < P>我不知道如何做到这一点我的头,但我会考

我想编写一个通用日志,将其剪切到存储过程集合中。我写这篇文章是为了定量地衡量我们的前端用户体验,因为我知道前端软件使用哪些SP以及它们是如何使用的。在我们开始性能调试之前,我想用它来收集基线,然后展示调试的结果

我可以从@PROCID动态提取对象名,但我无法确定传递的所有参数及其值。有人知道这是否可行吗?


编辑:将我的回答标记为结束此问题的答案。看来扩展事件对性能的影响最小,但是我不确定最小分析和扩展事件之间是否有实质性的区别。也许是为了一个雨天。

< P>我不知道如何做到这一点我的头,但我会考虑运行一个痕迹,如果我是你。可以使用SQL Server Profiler仅收集指定存储过程的信息(使用筛选器)。您可以将输出发送到一个表中,然后根据自己的心意查询结果。输出可以包括IO信息、传递了哪些参数、客户机用户ID和机器,等等

运行跟踪后,您可以将结果聚合到报告中,这些报告将显示过程被调用的次数、使用的参数等

以下链接可能会有所帮助:


我可以在不解析过程文本的情况下获得过程所采用参数的详细信息(至少在SQL Server 2005中是这样)


我猜这意味着我可以,使用一些适当的疯狂动态SQL,也可以提取它们的值

对于我的情况,最好的解决方案是只收集SP:starting和SP:completed并编写一些TSQL来迭代数据并填充跟踪表

我个人更喜欢代码生成,但在我工作的地方,他们更喜欢这种解决方案。我们在日志记录中丢失了一些粒度,但这已经足够解决我的问题了


编辑:这是一个确定的解决方案。即使只分析这两项,性能也会显著降低:(我希望我们有一个MSFT提供的方法来分析不会降低生产性能的工作负载。Oracle对此有很好的解决方案,但也有它的折衷方案。我希望看到MSFT实现类似的功能。新的DMV和扩展事件有助于关联项。再次感谢链接Martin。

我感谢您的评论!是的我目前一直在从跟踪中提取一些信息,但希望找到一种不那么干扰的方法。我可以通过代码生成实现我想要的。只是希望有一种更简单的方法。再次感谢。+1!-我打击自己,因为我从未注意到该信息\u架构视图。我想要传入的是值,而不仅仅是参数pe信息。感谢您的帖子。您使用的是什么版本的SQL Server?在这种情况下,您可以使用比SQL跟踪更轻量级和更灵活的扩展事件
select * from INFORMATION_SCHEMA.PARAMETERS where 
SPECIFIC_NAME = OBJECT_NAME(@@PROCID)