下面将提供按阻塞受害者排序的查询,以及请求的JobName。
SELECT er.session_id as [Spid]
,er.percent_complete
,DB_NAME(er.database_id) as [Database]
,CASE WHEN er.blocking_session_id=er.session_id THEN 0 ELSE er.blocking_session_id END Blocker
,Mem.used_memory_kb
,er.wait_time
,Mem.granted_memory_kb
,ES.nt_user_name
,er.status as [Status]
,er.wait_type as [Wait]
,ES.program_name
,J.Name as JobName
,ES.host_name
,ES.nt_domain
,er.start_time
,CONVERT(varchar(12), DATEADD(ms, DATEDIFF(ms, er.start_time, GETDATE()), 0), 108) TotalTime
,cast(qp.query_plan as XML) plans
,SUBSTRING(qt.text, er.statement_start_offset / 2,2000) [running Query]
,qt.text [Parent Query]
FROM sys.dm_exec_requests er
inner JOIN sys.dm_exec_sessions ES ON er.session_id = ES.session_id
outer APPLY sys.dm_exec_sql_text(er.sql_handle) AS qt
outer apply sys.dm_exec_query_plan(er.plan_handle) qp
LEFT JOIN sys.dm_exec_query_memory_grants Mem ON er.session_id = Mem.session_id
Left join msdb.dbo.sysjobs J on es.program_name like '%'+cast(right(j.job_id,12)as varchar(12)) +'%'
WHERE ES.program_name <>'Microsoft® Windows® Operating System'
ORDER BY
4 DESC ,
1 asc