--查詢CPU耗時最多的50個查詢
SELECT TOP 50 total_worker_time/execution_count/1000/1000 AS [CPU平均執行(秒)],
SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) N'執行語句'
,st.text N'完整語句'
,total_worker_time/1000/1000 AS [總消耗CPU 時間(秒)]
,execution_count [運作次數]
,qs.total_worker_time/qs.execution_count/1000/1000 AS [平均執行CPU 時間(秒)]
,last_execution_time AS [最後一次執行時間]
,max_worker_time /1000/1000 AS [最大執行時間(秒)]
,total_physical_reads N'實體讀取總次數'
,total_logical_reads/execution_count N'每次邏輯讀次數'
,total_logical_reads N'邏輯讀取總次數'
,total_logical_writes N'邏輯寫入總次數'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
WHERE last_execution_time>'2015-10-26 14:25:00'
ORDER BY total_worker_time/execution_count DESC;
--查詢目前阻塞的請求
SELECT session_id ,status ,blocking_session_id
,wait_type ,wait_time ,wait_resource
,transaction_id
,SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
END - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_requests qs
WHERE status = N'suspended';