DBAtlas · Atlas für Datenbankbetrieb

3902: The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION (COMMIT ohne zugehöriges BEGIN TRANSACTION)

SQL Server

Was 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.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank