2011-11-14 54 views
2

我正在创建一个应用程序,用于跟踪SQL Server中与服务器上执行的每个查询有关的特定性能相关统计信息。我可以通过SQL Trace或更具体地说,通过使用StatementCompletedBatchCompleted事件类别获得大部分信息。根据T-SQL语句跟踪等待统计信息

使用SQL跟踪与上述事件给我的一切除了等待统计。我知道我可以分别从两个动态管理视图和功能sys.dm_os_wait_statssys.dm_os_waiting_tasks获得等待统计信息。

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

我无法准确回答这个问题,因为SQL Trace没有给我这些信息。 有没有办法从SQL Server获取服务器上正在执行的每条语句的等待统计信息?

回答

3

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

查看SQLSkills: Capturing wait stats for a single operation的示例代码。

+0

这正是我所期待的。尽管使用跟踪每个查询有点贵。感谢您及时的回复! –