Einzelnen Beitrag anzeigen

OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Keine Transaktion aktiv ?!?

  Alt 11. Nov 2015, 11:16
Datenbank: MSSQLExpress • Version: 14 • Zugriff über: ADO
Hallo Freunde,

ich habe hier ein Phänomen, das mir dutzende Fragezeichen auf die Stirn zaubert - ich hab einfach keine Ahnung mehr, was ich noch machen soll.

Situation: Delphi XE4-Anwendung empfängt Binärdaten von Blackboxes, die in LKW eingebaut sind. Diese Daten werden dekodiert und als generalisierter Datenblock in eine TQueue<DataBlock> geschoben. Die Queue ist mit Critical Sections abgesichert, denn:

Ein gleichpriorisierter Thread schaut nun in der Queue nach Datenblocks. Findet er einen, wird dieser weiter aufbereitet und per SQL-Statement in eine SQL-Datenbank geschrieben. Da durchaus mehrere verschiedene Datenblöcke in der DB landen können, wird dieser gesamte Aufbereitungs- und Schreibvorgang in eine SQL-Transaktion verpackt. Geht alles gut, folgt ein CommitTrans, wenn nicht, ein RollbackTrans mit Protokollierung des Fehlers in einem Logfile. Die Datenbank ist eine SQL-Express 14-DB, also wahrlich kein Hexenwerk, wie auch das ganze System eigentlich kein Hexenwerk ist.

Diese Anwendung läuft nun seit Monaten bei den verschiedensten Kunden ohne Störungen und ohne Murren. Nur bei einem nicht. Bei diesem taucht in unregelmäßigen Abständen ein Error-Report von madExcept auf und es zeigt sich eine EOleException: Keine der Transaktionen ist aktiv. Es gibt noch zwei weitere mögliche Exceptions: "Fehler im TDS-Datenstrom" und "EOleException, Da der manuelle oder verteilte Transaktionsmodus aktiviert ist, kann keine neue Verbindung erstellt werden".

Ich kann mir das einfach nicht erklären, denn mein Exceptionhandler wird gar nicht erst aufgerufen. Auch kapiere ich nicht, wie da "keine Transaktion aktiv" sein kann - es gibt keine Chance, das BeginTrans zu umgehen, ebensowenig eine Chance, um das Commit bzw. Rollback herumzukommen (Mißgestaltete if-Abfragen, exit-Befehle irgendwo - alles sauber).

Der Rechner mit diesen Problemen hat ein Windows 7 Professional 64Bit mit allen Updates als Betriebssystem, 4GB Speicher, normale Festplatte... Alles völlig normal bis auf die CPU (ist ein Pentium G3260, Dual-Core).

Dieser Fehler tritt "einfach so" auf, es gibt keinen erkennbaren Grund. Ich laboriere nun seit 3 Wochen damit herum und habe keinen Schimmer, wonach ich da suchen soll.

Hat jemand von euch eine Idee ?

Geändert von OlafSt (11. Nov 2015 um 11:19 Uhr)
  Mit Zitat antworten Zitat