Comment vérifier si une table est verrouillée dans le serveur sql
J'ai un grand rapport, je suis en cours d'exécution sur le serveur sql server. Il faut plusieurs minutes pour s'exécuter. Je ne veux pas que les utilisateurs en cliquant sur exécuter deux fois. Depuis que j'ai envelopper l'ensemble de la procédure dans une transaction, comment puis-je vérifier pour voir si la table est verrouillée par une transaction? Si oui, je voudrais retourner un message d'erreur disant "rapport de production, veuillez réessayer dans quelques minutes".
Comment cela peut-il être réalisé?
source d'informationauteur Byron Whitlock
Vous devez vous connecter pour publier un commentaire.
Mieux encore, pensez
sp_getapplock
qui est conçu pour cela. Ou utiliserSET LOCK_TIMEOUT
Sinon, vous auriez à faire quelque chose avec
sys.dm_tran_locks
qui je l'utiliserais uniquement pour le DBA trucs: ne pas définis par l'utilisateur de la simultanéité.Vous pouvez utiliser le
sys.dm_tran_locks
point de vue, qui renvoie des informations sur le gestionnaire de verrou de ressources.Essayer cette
Si vous êtes de vérifier si un verrou est appliqué sur une table ou pas, essayez la requête ci-dessous.
sys.dm_tran_locks contient les informations de verrouillage des sessions
Si vous voulez savoir spécifique de la table est verrouillée ou non, vous pouvez utiliser la requête suivante
si vous êtes intéressé à trouver à la fois le nom de connexion de l'utilisateur et de la requête en cours d'exécution
Pour plus d'infomraton verrouillage de la requête
Plus d'infor sur sys.dm_tran_locks