1

如何在 SQL Server 中获取分隔开始和结束 SQL 查询的时间点?如果我设置统计时间,有没有办法将得到的 cpu / 经过时间添加到当前日期时间?

谢谢

4

1 回答 1

1

你可以使用

1)SQL Trace(包括SQL Profiler)拦截{ SP:StmtCompleted | SP:StmtCompleted } 带有以下列 CPU 时间、持续时间/已用时间、每个查询的开始和结束时间

在此处输入图像描述

或者

2) 扩展事件会话 (SQL2008+)

在这两种情况下,这些事件 ( %:StmtCompleted) 都可能对服务器性能产生负面影响,因此不要在大量使用的服务器(生产)上使用此方法。如果您在生产服务器上遇到性能问题,这可能会加剧问题。

3) 相反,如果您想检测那些有性能问题的 { queries / sql modules },您可以使用

SQL2005+ sys.dm_exec_query_stats

SQL2008+ sys.dm_exec_proc_stats

SQL2008+ sys.dm_exec_trigger_stats

例子:

SELECT TOP(50) ... 
    total_worker_time *1.00 / execution_count AS Avg_CPU_time,
    total_elapsed_time *1.00 / execution_count AS Avg_Duration,
    total_logical_reads *1.00 / execution_count AS Avg_LIO_time
FROM sys.dm_..._stats 
ORDER BY Avg_LIO_time DESC

您可以使用 Glenn Berry 的脚本 http://sqlserverperformance.wordpress.com/2013/11/15/sql-server-diagnostic-information-queries-for-november-2013/

于 2013-11-27T20:10:30.537 回答