[.NET/SqlServer) Transaction is completed; no longer useable

Pagina: 1
Acties:

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Uiteindelijk probeer ik het toch eens hier...

Ik heb een procedure die een hele hoop transacties uitvoert op een DB. Dit heeft al altijd goed gelopen. Echter, nu en dan is er een (of meerdere) transacties die niet goed uitgevoerd worden.
In m'n logfile krijg ik dan deze error:
This transaction has completed; it is no longer useable
Het vreemde aan de zaak is, dat dit niet altijd voorkomt, en als het voorkomt, is het ook niet bij dezelfde transactie. Ik kan die error moeilijk reproduceren.
Op internet heb ik al eens gezocht, en meestal zie ik de uitleg, dat je een transactie die al gecommit of gerollbacked is, opnieuw probeerd te committen / rollbacken.
Bij mij is dat echter niet het geval.
Zowel m'n begintransaction als m'n commit-transaction staan in een try-block. De rollback transaction staat in een catch block.

Iemand die deze error kent en evt een andere oorzaak hiervoor weet ?

https://fgheysels.github.io/


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Wordt veroorzaakt door SQLServer. Stel je start een transactie, en voert een aantal insert statements uit en een delete actie. Die delete actie faalt, bv door een FK violation. Dat is een dermate zware error dat SQLServer de transaction ZELF afkapt en terugrolt. (ik weet het severity level niet uit mn hoofd)

In .NET weet je code en de .NET code niets van dit al, want een ADO.NET transactie wordt gewoon opgestart door BEGIN TRANS naar de db server te sturen als command. Dus, jij krijgt de error en wil een transaction rollback doen, echter die transactie is al weg op de server, en de client krijgt dan een error, en jij daarna dus ook.

Is niet op te vangen noch kun je testen naar een of andere state voordat je Rollback aanroept. Het enige wat je kunt doen is een try/catch om je .... Rollback zetten :D

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Hmm, klinkt plausible, maar toch vreemd... Aangezien ik diezelfde batch vorige week heb uitgevoerd (met dezelfde waardes, etc...), en toen geen enkele keer die fout kreeg...

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 28-11 08:35

curry684

left part of the evil twins

Die zware severity kun je natuurlijk op tig manieren triggeren: een moment-afhankelijke fout als "transaction log vol" zal hem ook laten gebeuren. Nu zul je die vast en zeker niet aan het handje hebben, maar iets ernstigs gebeurt er wel ;)

Professionele website nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Het vreemde en het vervelende is gewoon dat ik het
• niet kan reproduceren
• enkel deze error message zie, en verder niets in m'n logs / eventviewer / etc... te zien krijg.

https://fgheysels.github.io/