跟踪每个T-SQL语句的等待统计信息

时间:2011-11-14 12:10:32

标签: sql sql-server

我正在创建一个应用程序,它可以跟踪SQL Server中针对服务器上执行的每个查询的一些特定的与性能相关的统计信息。我可以通过SQL Trace或更具体地使用StatementCompletedBatchCompleted事件类获取大部分信息。

SQL Trace 与上述事件一起使用可以获得除等待统计信息以外的所有内容。我知道我可以从两个动态管理视图和函数 sys.dm_os_wait_statssys.dm_os_waiting_tasks中分别获取等待统计信息。

我需要找到一种方法以某种方式将这两个信息组合在一起,以便我可以在每个查询的基础上确定等待统计数据。例如,我需要能够回答一个问题:查询X在开始执行之前必须等待IO或CPU资源多长时间?

我无法准确回答此问题,因为SQL Trace不会向我提供此信息。 无论如何都要从SQL Server获取服务器上正在执行的每个语句的等待统计信息吗?

1 个答案:

答案 0 :(得分:3)

如果您使用的是SQL Server 2008,则可以使用扩展事件来捕获在感兴趣的spid上过滤的sqlos.wait_info事件的详细信息。

请参阅SQLSkills: Capturing wait stats for a single operation代码示例。