2015年3月3日 星期二

查詢鎖定及被鎖定Query

WITH SessionBlock AS
(
SELECT er.session_id, er.Blocking_session_id, 
er.sql_handle AS [si_sql_handle], 
er.plan_handle AS [si_plan_handle], 
er.statement_start_offset AS [si_statement_start_offset], 
er.statement_end_offset AS [si_statement_end_offset], 
ec.most_recent_sql_handle AS [bsi_sql_handle], 
es.last_request_start_time
FROM sys.dm_exec_requests er
INNER JOIN sys.dm_exec_sessions es 
    ON er.Blocking_session_id = es.session_id
INNER JOIN sys.dm_exec_connections ec 
    ON er.Blocking_session_id = ec.session_id
WHERE er.blocking_session_id > 50
)
SELECT session_id, Blocking_session_id, 
SUBSTRING (sist.TEXT, (si_statement_start_offset/2)+1,
((CASE si_statement_end_offset WHEN -1 THEN datalength(sist.TEXT)  
 ELSE si_statement_end_offset END - si_statement_start_offset)/2) + 1 ) AS [si_query],
bsist.TEXT AS [bsi_query],
sb.last_request_start_time
FROM SessionBlock sb
CROSS APPLY sys.dm_exec_sql_text(sb.si_sql_handle) AS sist
CROSS APPLY sys.dm_exec_sql_text(sb.bsi_sql_handle) AS bsist

沒有留言:

張貼留言