denrepo

SQL ServerBlocking & locks

Blocking chain

Who is blocked, by whom, for how long, and the last statement the blocker ran. A blocker whose SQL looks finished is usually an open transaction.

Not yet verified. How scripts are tested

b-mssql-blocking.sql
1SELECT w.session_id AS blocked_session,2       w.blocking_session_id,3       w.wait_type, w.wait_duration_ms,4       DB_NAME(r.database_id) AS database_name,5       t.text AS blocked_sql,6       bt.text AS blocker_last_sql7FROM sys.dm_os_waiting_tasks w8JOIN sys.dm_exec_requests r ON r.session_id = w.session_id9CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t10LEFT JOIN sys.dm_exec_connections bc ON bc.session_id = w.blocking_session_id11OUTER APPLY sys.dm_exec_sql_text(bc.most_recent_sql_handle) bt12WHERE w.blocking_session_id IS NOT NULL13  AND w.blocking_session_id <> w.session_id14ORDER BY w.wait_duration_ms DESC;

Paste it into your query tool.

Open in denrepo