3902: The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION (COMMIT ohne zugehöriges BEGIN TRANSACTION)
SQL ServerWas bedeutet das?
Ein COMMIT TRANSACTION wurde ausgeführt, aber es gibt kein zugehöriges offenes BEGIN TRANSACTION. Es wurde keine zu committende Transaktion gefunden, weil der Transaktionszähler (@@TRANCOUNT) null ist.
Ursache
Unausgeglichene Verwendung von BEGIN/COMMIT/ROLLBACK, die Transaktion wurde nach einem Fehler bereits zurückgesetzt, falsche Verwaltung der Zähler verschachtelter Transaktionen oder erneuter COMMIT-Aufruf nach ROLLBACK in einem CATCH-Block.
Lösung
Gleiche die Anzahl der BEGIN- und COMMIT-Statements aus. Prüfe vor dem Commit @@TRANCOUNT (IF @@TRANCOUNT > 0 COMMIT). Führe in TRY...CATCH bei einem Fehler ROLLBACK abhängig von XACT_STATE()/@@TRANCOUNT aus und verhindere ein unnötiges COMMIT. Überprüfe die Logik verschachtelter Transaktionen.
Weitere Einträge zu dieser Datenbank
- 2714There is already an object named in the database (Objekt mit diesem Namen existiert bereits)
- 601Could not continue scan with NOLOCK due to data movement (Scan mit NOLOCK wegen Datenbewegung abgebrochen)
- 50000Mit RAISERROR ausgelöster benutzerdefinierter Fehler
- 1101Could not allocate a new page because of insufficient disk space in filegroup
- 3729Cannot DROP because it is being referenced by object
- 3961Snapshot isolation transaction failed because the object was modified by a DDL statement
- 1785Introducing FOREIGN KEY constraint may cause cycles or multiple cascade paths