Einzelnen Beitrag anzeigen

mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#1

Firebird 2.1 - Stoppen von Queries nach Client-Crash

  Alt 1. Jun 2010, 15:06
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBX
Hallo zusammen,

über die MON$STATEMENT Systemtabelle kann man ja länger laufende Queries mittels delete Befehl abbrechen. Problem an der Geschichte: Zwar werden die Statements wohl abgebrochen aber laut FB Bug-Tracker bleibt der Status solange auf active bis der Client den Cursor freigibt. Was aber nun, wenn der Client aufgrund eines Crashs zu dem Zeitpunkt nicht mehr vorhanden ist?

Ich hatte konkret den Fall, dass sich scheinbar zwei Instanzen meines Programmes so dämlich gegenseitig in die Quere gekommen sind, dass eine Schreibquery "hängen" geblieben ist. Ergebnis: ich habe ein laufendes Update-Statement (zumindest mit Status aktiv in der MON$STATEMENT) hinter das sich alle anderen Queries einreihen und brav warten. Den Client-Prozess gibt es nicht mehr entsprechend kommt auch keine Nachricht über das Schließen des Cursors zurück. In 2.1 kann man auch keine Attachments komplett löschen. Somit war die einzige Idee, die ich hatte Firebird komplett runterzufahren (Dienst beenden). Nachteil ist natürlich, dass die wartenden Schreibzugriffe nicht ausgeführt wurden.

Gibt es für solch eine Situation (FB wartet auf einen Client, den es nicht mehr gibt) eine andere Lösung? Mit 2.5 könnte ich das Attamchment löschen. Das würde ja auch helfen. Nur ist mit 2.5 halt erst im zweiten Quartal zu rechnen.


Gruß

Markus
  Mit Zitat antworten Zitat