3902: The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION (COMMIT TRANSACTION sans BEGIN TRANSACTION correspondant)
SQL ServerQue 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.
Autres entrées pour ce moteur
- 2714There is already an object named in the database (un objet portant ce nom existe déjà dans la base)
- 601Could not continue scan with NOLOCK due to data movement (poursuite du parcours NOLOCK impossible en raison d'un déplacement de données)
- 50000Erreur personnalisée levée avec RAISERROR
- 1101Could not allocate a new page because of insufficient disk space in filegroup (impossible d'allouer une nouvelle page : espace disque insuffisant dans le filegroup)
- 3729Cannot DROP because it is being referenced by object (DROP impossible : l'objet est référencé par un autre objet)
- 3961Snapshot isolation transaction failed because the object was modified by a DDL statement (échec de la transaction en snapshot isolation : objet modifié par une instruction DDL)
- 1785Introducing FOREIGN KEY constraint may cause cycles or multiple cascade paths (la contrainte FOREIGN KEY peut créer des cycles ou plusieurs chemins de cascade)