在变量中捕获SQL统计时间

时间:2015-02-06 16:12:09

标签: sql sql-server sqlperformance

我想通过大量变量选项对一些高级查询进行一些自动SQL分析。我希望做的是类似于以下的

set statistics io on
set statistics time on

select *
from MyTable

set statistics time off
set statistics io off

--Somehow return the statistics for this query back to the calling C# code
-- so that I can log it for displaying in a report among other queries

我尝试使用以下内容但是我不确定如何为我的运行查询找到查询句柄以提取所需的执行时间

select * from sys.dm_exec_query_stats

所以我的问题确实有两个解决方案。 1)简单地捕获statistcs返回消息是否可行? 2)或者是否可以找到我的sql查询句柄,以便我可以查询dm_exec_query_stats表?

我还应该提到我考虑过以下但我希望有一个更完整的解决方案。

declare @StartTime datetime = getdate();
Select * from myTable;
declare @Dur datetime = getdate() - @StartTime;

1 个答案:

答案 0 :(得分:1)

当然,只要我转向stackoverflow,我就自己弄清楚了!

如果将来有人也在寻找这个...这是一个解决方案,您只需在where子句中输入您的运行查询,并返回所有性能指标。请记住,时间以微秒为单位,而不是毫秒

SELECT *
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
where st.text = 'Your Query Here'