Trouver la chaîne de blocage (verrous)
SQL ServerSessionCommande
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).Ce que fait la commande
Liste les sessions en attente et les sessions qui les bloquent, avec le temps d'attente et la requête exécutée ; rend la chaîne de verrous visible.
Quand l'utiliser
Pour trouver l'origine de la contention de verrous lors de plaintes du type "l'application se fige / expire".
Attention
Confirmez avec le responsable métier avant de tuer le bloqueur racine (le SPID qui n'est bloqué par personne mais en bloque d'autres). Requête seule ; aucun risque.