232 votes

Comment vérifier quels verrous sont détenus sur une table ?

Comment vérifier quels verrous de base de données sont appliqués sur quelles lignes par rapport à un lot de requêtes ?

Y a-t-il un outil qui met en évidence le verrouillage au niveau des lignes de la table en temps réel ?

Base de données : SQL Server 2005

22voto

Neil Barnwell Points 20731

Vous pouvez également utiliser la fonction intégrée sp_who2 pour obtenir les processus bloqués et bloquants actuels sur une instance de SQL Server. En général, vous exécutez cette procédure en même temps qu'une instance SQL Profiler pour trouver un processus bloquant et regarder la commande la plus récente que spid a émise dans profiler.

19voto

l2m2 Points 38

Vous pouvez trouver le blocking sql et le wait sql en exécutant ceci :

SELECT
    t1.resource_type ,
    DB_NAME( resource_database_id) AS dat_name ,
    t1.resource_associated_entity_id,
    t1.request_mode,
    t1.request_session_id,
    t2.wait_duration_ms,
    ( SELECT TEXT FROM sys.dm_exec_requests r CROSS apply sys.dm_exec_sql_text ( r.sql_handle ) WHERE r.session_id = t1.request_session_id ) AS wait_sql,
    t2.blocking_session_id,
    ( SELECT TEXT FROM sys.sysprocesses p CROSS apply sys.dm_exec_sql_text ( p.sql_handle ) WHERE p.spid = t2.blocking_session_id ) AS blocking_sql 
FROM
    sys.dm_tran_locks t1,
    sys.dm_os_waiting_tasks t2 
WHERE
    t1.lock_owner_address = t2.resource_address

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X