DBAtlas · Atlas d'exploitation des bases de données

3902: The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION (COMMIT TRANSACTION sans BEGIN TRANSACTION correspondant)

SQL Server

Que signifie cette erreur ?

Un COMMIT TRANSACTION a été exécuté, mais il n'existe aucun BEGIN TRANSACTION ouvert correspondant. Aucune transaction à valider n'a été trouvée, car le compteur de transactions (@@TRANCOUNT) vaut zéro.

Cause

Utilisation déséquilibrée de BEGIN/COMMIT/ROLLBACK, transaction déjà annulée après une erreur, gestion incorrecte des compteurs de transactions imbriquées, ou nouvel appel à COMMIT après un ROLLBACK dans un bloc CATCH.

Comment la corriger

Équilibrez le nombre d'instructions BEGIN et COMMIT. Vérifiez @@TRANCOUNT avant de valider (IF @@TRANCOUNT > 0 COMMIT). Dans TRY...CATCH, en cas d'erreur, effectuez le ROLLBACK en fonction de XACT_STATE()/@@TRANCOUNT et évitez un COMMIT inutile. Revoyez la logique des transactions imbriquées.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur