SQL Server查询开始结束时间

时间:2013-11-27 19:31:08

标签: sql-server performance response-time

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

由于

1 个答案:

答案 0 :(得分:1)

您可以使用

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

enter image description here

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/