SET NOCOUNT ON
SELECT
total_elapsed_time / 1000 /1000 N'总执行时间(s)' ,
execution_count N'执行次数' ,
( total_elapsed_time / execution_count ) / 1000 /1000 N'平均执行时间(s)' ,
SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
( ( CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1) N'执行语句'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
( ( CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1) NOT LIKE '%fetch%'
and (( total_elapsed_time / execution_count ) / 1000) > 30 * 1000 -- 执行时间超过30秒
ORDER BY total_elapsed_time / execution_count DESC;
提示:该SQL执行需要VIEW SERVER STATE权限。