DBAtlas · Atlas für Datenbankbetrieb

Die Blockierungskette (Sperren) finden

SQL ServerSession

Befehl

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.

In DBAtlas öffnen →

Verwandte Einträge