DBAtlas · Veritabanı operasyon atlası

3902: The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION

SQL Server

Ne demek?

Bir COMMIT TRANSACTION çalıştırıldı ancak ona karşılık gelen açık bir BEGIN TRANSACTION yok. Transaction sayacı (@@TRANCOUNT) sıfır olduğundan commit edilecek bir transaction bulunamadı.

Neden olur?

Dengesiz BEGIN/COMMIT/ROLLBACK kullanımı, hata sonrası transaction'ın zaten geri alınmış olması, iç içe transaction sayımının hatalı yönetilmesi veya CATCH bloğunda ROLLBACK sonrası tekrar COMMIT çağrılması.

Nasıl çözülür?

BEGIN ve COMMIT sayısını dengeleyin. Commit'ten önce @@TRANCOUNT değerini kontrol edin (IF @@TRANCOUNT > 0 COMMIT). TRY...CATCH içinde hata olduğunda XACT_STATE()/@@TRANCOUNT'a göre ROLLBACK yapın ve gereksiz COMMIT'i önleyin. İç içe transaction mantığını gözden geçirin.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar