Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#8

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 16:35
Wieso mußt du den Connectionstring neu zuweisen? Hat sich denn in der Zwischenzeit an den Verbindungsdaten etwas geändert?
Das muss man machen, sonst baut er die Verbindung komplett nicht neu auf
Was meinst du damit, daß die Verbindung nicht komplett neu aufgebaut würde? Eine halb aufgebaute Verbindung gibt es nicht: Entweder du hast Verbindung zur Datenbank oder eben nicht.

Das mit dem ConnectionString kann ich hier nicht nachvollziehen. Kannst du einmal überprüfen, wie der ConnectionString aussieht, bevor du ihn neu zuweist? Ich kann mir nämlich nicht wirklich vorstellen, daß der ConnectionString plötzlich zerschossen sein soll. Ein Property-Wert ändert sich nicht einfach von alleine. Ich kann hier jede AdoDB-Connection schließen und öffnen, ohne den ConnectionString neu zuzuweisen, ob jetzt mit MS-Access oder MSSQL. Falls der ConnectionString dennoch zerstört sein sollte, wie du unter von deinen SQL-Anweisungen schreibst, dann hast du vermutlich defekte Ram-Module.

Der Kunde bekommt ja mit das das Verhalten des Programms ein Problem hat. Da alle Systeme mit SSD ausgerüstet sind währe die Anwendung in 10 sec wieder einsatzbereit, das wird aber vom Kunden nicht toleriert, diese muss ohne Bug 100% am Tag laufen!
Wenn es Verbindungsabbrüche gibt, die dein Programm nicht zu verantworten hat, dann kannst du daran auch nichts ändern, egal was du da zusammenprogrammierst. Es ging aber darum, daß du die Connection neu aufbauen willst, ohne die Datasets zu schließen. Die sind aber schon geschlossen, wenn die Verbindung abgebrochen ist, denn schließlich hängen die Datasets an der Connection-Komponente. Daß das Property Active der Datasets dennoch auf True steht, hat nichts zu bedeuten. Du mußst also alle Dataset.Active auf False stellen, danach AdoConnection.Connected wieder auf True und erst danach Dataset.Active auf True setzen.

Nun scheint sich ein Hardwareproblem herauszustellen, heute wieder ein Crash nach 5 Stunden Dauereinsatz, hier haben sich meine SQL Anweisungen "von alleine" verändert, die in den Komponenten hinterlegt sind (mitten im SQL Statement sind einzelne Buchstaben verändert). Ich gehe nun von einem Hardwareproblem aus und tausche diese aus.
Ein Hardware-Problem kann durchaus dafür sorgen, daß Daten von einer Festplatte fehlerhaft gelesen werden. Allerdings befinden sich die SQL-Anweisungen, von denen du hier schreibst, bereits im Arbeitsspeicher, können also nur aufgrund fehlerhafter Speichermodule falsch gelesen werden.

Trotzdem währe ich an einer Lösung zum Verbindungsproblem interessiert, jeder der z.B. per WLan sonst Mobil arbeitet ist davon betroffen .......
Ich denke, hierzu wurde bereits alles gesagt, oder? Wenn du anderer Ansicht bist, wären konkrete Hinweise durchaus hilfreich: Was genau meinst du mit "eine Lösung zum Verbindungsproblem"?

Ihr habe das Problem nicht verstanden: DataSet gehen auf und zu ....
Wenn nun einmal in x Stunden zu einem Problem kommt (warum auch immer) dann verweigert ADO eine Abfrage obwohl diese wieder möglich ist ohne die Connection zu schließen und wieder zu öffnen. Hier fragt ich nach einer Idee um der ADO zusagen : "versuche es doch einfach nochmals und ignoriere dein gespeichertes Ergebnis"!
Du behauptest jetzt also, wir alle, die wir dir zu helfen versuchen, hätten das Problem nicht verstanden. Okay, mag ja sein, sowas kann schon mal vorkommen. Aber läge es dann nicht an dir, das Problem so zu schildern, daß auch wir Trottel das verstehen können?

Weiterhin behauptest du, ADO verweigere eine Abfrage, obwohl diese wieder möglich ist, ohne die Connection zu schließen und wieder zu öffnen. Verstehe ich das richtig, daß du damit die Ansicht vertrittst, daß nach einem Abbruch der Verbindung via WLan die Ado-Connection weiterhin aktiv wäre? Sei dir versichert: Genau so ist es nicht. Auch wenn die entsprechenden Properties deiner Komponenten weiterhin den Status True anzeigen (connected, active), ist die Verbindung inaktiv, wenn die WLan-Verbindung abreißt. Datenbanken vergeben Transaktions-Handles, z.B. beim Herstellen einer Verbindung oder beim Ausführen eines Select-Befehls. Diese Handles sind nach einem Abriß der WLan-Verbindung nicht mehr gültig, weshalb du nicht nur die Connection, sondern auch die Datasets erst schließen mußt, bevor du sie wieder öffnen kannst.

So, jetzt klinke ich mich hier aus, bevor ich noch einen irreparablen Hirnschaden erleide
  Mit Zitat antworten Zitat