Pour ajouter aux autres réponses, sp_lock
peut également être utilisé pour vider les informations de verrouillage complètes sur tous les processus en cours d'exécution. La sortie peut être accablante, mais si vous voulez savoir exactement ce qui est verrouillé, elle est précieuse à exécuter. Je l'utilise généralement pour me concentrer sp_who2
rapidement sur les problèmes de verrouillage.
Il existe plusieurs versions différentes des sp_lock
procédures «plus conviviales» disponibles en ligne, selon la version de SQL Server en question.
Dans votre cas, pour SQL Server 2005, sp_lock
est toujours disponible, mais obsolète, il est donc maintenant recommandé d'utiliser la sys.dm_tran_locks
vue pour ce genre de chose. Vous pouvez trouver un exemple de la façon de "lancer votre propre" fonction sp_lock ici .
Vous pouvez trouver les verrous actuels sur votre table en suivant la requête.
Voir sys.dm_tran_locks
S'il existe plusieurs instances du même request_owner_type , la colonne request_owner_id est utilisée pour distinguer chaque instance. Pour les transactions distribuées, les colonnes request_owner_type et request_owner_guid afficheront les différentes informations d'entité.
Par exemple, la session S1 possède un verrou partagé sur Table1; et la transaction T1, qui s'exécute sous la session S1, possède également un verrou partagé sur Table1. Dans ce cas, la colonne resource_description renvoyée par sys.dm_tran_locks affichera deux instances de la même ressource. La colonne request_owner_type affichera une instance en tant que session et l'autre en tant que transaction. De plus, la colonne resource_owner_id aura des valeurs différentes.
la source
J'utilise une vue de gestion dynamique (DMV) pour capturer les verrous ainsi que object_id ou partition_id de l'élément qui est verrouillé.
(DOIT basculer vers la base de données que vous souhaitez observer pour obtenir object_id)
la source
sp_who2
et ensys.dm_os_waiting_task
(tous deux essayant de mettre à jour la même table). Mais votre instruction ne renvoie aucune ligne. Des idées?Vous pouvez également utiliser la
sp_who2
procédure stockée intégrée pour obtenir les processus bloqués et bloquants actuels sur une instance SQL Server. En règle générale, vous l'exécutez avec une instance de SQL Profiler pour trouver un processus de blocage et examiner la commande la plus récente spid émise dans le profileur.la source
Vous pouvez trouver des détails via le script ci-dessous.
la source