Bonjour,
Je viens de changer de serveur de BDD et je rencontre un problème de blocage que je n'avais pas avant.
D'une manière qui semble aléatoire, des utilisateurs provoque des blocages de table et ces blocages ne sont pas levés même après exécution des COMMIT, par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| SET NOCOUNT ON
BEGIN TRANsaction TRANS
DECLARE @Errors int
set @Errors = 0
DECLARE @VN int
SET @VN = (SELECT VN FROM GALAXY_C_TEST.dbo.SQL_NUMERO WHERE CODE = 'CPT_OXY_GCPREGLN' )
SET @errors = @errors + @@ERROR
UPDATE GALAXY_C_TEST.dbo.SQL_NUMERO
SET VN = @VN+1
WHERE CODE = 'CPT_OXY_GCPREGLN'
SET @errors = @errors + @@ERROR
SELECT @VN AS Valeur
SET @errors = @errors + @@ERROR
IF @errors = 0
COMMIT TRANSACTION TRANS
ELSE ROLLBACK TRANSACTION TRANS
SET NOCOUNT OFF |
Cette requête est sensé lever les verrous à l'issue de son exécution pourtant il arrive que la table SQL_numero reste verrouillée.
J'ai alors ce type de situation :
J'ai alors exécuté cette requête :
select * from sys.dm_exec_requests where session_id = 73
qui ne me retourne aucune requête et je ne comprend pas qu'une session qui n'exécute plus de requête puisse bloquer un autre utilisateur.
Pour autant la vue "sys.dm_exec_sessions" indique bien 1 dans la colonne "open_transaction_count" pour la session 73
Je suis sous Microsoft SQL Server 2022 (RTM) - 16.0.1000.6 (X64) Oct 8 2022 05:58:25 Copyright (C) 2022 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2022 Datacenter 10.0 <X64> (Build 20348: ) (Hypervisor)
Merci pour votre aide.
Partager