2013-11-27 103 views
1

如何获取临时时间分隔开始和结束SQL Server中的SQL查询?如果我设置统计时间,是否有任何方法将结果CPU /经过时间添加到当前日期时间?SQL Server查询开始结束时间

感谢

+1

在我们的免费工具运行查询生成实际执行计划,[SQL哨兵方案资源管理器](http://sqlsentry.net/plan-explorer/)。没有任何'SET'命令摆弄 - 这一切都是为你自动完成的。 –

+0

属于dba.stackexchange.com – Benjamin

回答

1

你可以使用

1)SQL跟踪(包括SQL事件探查器)拦截{SP:StmtCompleted事件| SP:StmtCompleted事件}与下面的列CPU时间,持续时间/经过时间,开始&结束每个查询的时间

enter image description here

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

在在这两种情况下,这些事件(%:StmtCompleted)都可能对服务器性能产生负面影响,因此请勿在重用的服务器(生产)上使用此方法。如果您在生产服务器上有性能问题,则可能会加重问题。

3)相反,如果要检测到的那些{查询/ SQL模块}与性能问题,你可以使用

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 

你可以使用格伦·贝瑞的脚本 http://sqlserverperformance.wordpress.com/2013/11/15/sql-server-diagnostic-information-queries-for-november-2013/