Die Blockierungskette (Sperren) finden
SQL ServerSessionBefehl
SELECT r.session_id AS waiting_spid,
r.blocking_session_id AS blocking_spid,
r.wait_type,
r.wait_time / 1000.0 AS wait_sec,
r.status, r.command,
DB_NAME(r.database_id) AS db,
t.text AS waiting_query
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.blocking_session_id <> 0
ORDER BY r.wait_time DESC;
-- To find the head (root) blocker of the chain, look for the SPID whose
-- own blocking_session_id is not set (it is not blocked itself).Was es tut
Listet wartende Sessions und die sie blockierenden Sessions mit Wartezeit und ausgeführter Abfrage; macht die Sperrkette sichtbar.
Wann einsetzen
Um bei Beschwerden wie "die Anwendung hängt / läuft in Timeouts" die Quelle der Sperrkonflikte zu finden.
Vorsicht
Stimme dich mit dem fachlich Verantwortlichen ab, bevor du den Root Blocker beendest (die SPID, die von niemandem blockiert wird, aber andere blockiert). Nur Abfrage; kein Risiko.