![]() |
Datenbank: MSSQL • Version: 2017 • Zugriff über: FireDAC
DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Hallöle...8-)
es kommt jeden Mittag bei einem Benutzer vor: Zitat:
Der User macht vor dem Essen gehen den Computer in den Stromsparmodus. Nach dem "Aufwachen" macht die erste Anfrage an die DB "puff"...:? Eigentlich klar oder? Die Session ist ja weg... In der Connection ist "AutoConnect" und "AutoReconnect" = True. Welche Möglichkeiten habe ich sonst? Ich will ungern bei jeder Anfrage die Connection neu aufbauen und wieder beenden...:roll: Frage: Auf die Message des Energiesparmodus zu reagieren und die Connection schließen? Und über "AutoConnect" wieder öffnen? Danke |
AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Da gibts eine Windows Gruppenrichtlinie "Netzwerkverbindungen im verbundenen Standbymodus zulassen (Netzbetrieb)", die sorgt dafür, dass die Netzwerkverbindung nicht getrennt wird im Standby.
Dann muss man allerdings noch schauen, ob der DB-Server eventuell regelmäßig testet, ob seine Schäfchen noch erreichbar sind, und wenn nicht, die Verbindung schließt. Dann nutzt das alles nichts, und es muss doch eine Lösung her, die die Verbindung schließt, wenn die Windows-Message "Achtung, wir machen gleich zu!" aufschlägt. |
AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Du weißt doch, wie die Fehlermeldung heißt.
Bei den ADO-Komponenten bekommt man auch einen nummerischen Fehlercode. Geht das bei FireDac auch? Wenn ja: Ein Try-Except um die Problemstelle und konkret diese Fehlernummer abfragen (ansonsten halt den Fehlertext parsen, was bei Mehrsprachigkeit nicht mehr so leicht ist) und dann die Verbindung neu aufbauen. Grob sowas:
Delphi-Quellcode:
Und ja: Vorrangig auf die Windows-Message "Achtung, wir machen gleich zu!" reagieren und das dann irgendwo "vermerken" um beim nächsten "BeforeOpen-Ereignis" ... der Datenbankkomponente ggfls. entsprechend darauf reagieren zu können.
AnzahlDerZulaessigenFehler := 5; // Oder anderer Wert für die Anzahl der Versuche.
FehlerZaehler := 0; repeat try // alles, was in dem Umfeld erforderlich ist ... Datenbankkomponente.Open; // ... break; except on e : Exception do begin if e.ErrorCode = DerHierGeworfeneFehlerCode then begin // Datenbankverbindung schließen und neu aufbauen ... end else begin raise; // oder sonstige, sinnvolle Fehlerbehandlung end; end; end; FehlerZaehler := FehlerZaehler + 1; until FehlerZaehler > AnzahlderzulaessigenFehler; // Fehlerbehandlung, falls der Verbindungsaufbau nicht funktioniert haben sollte ... if (FehlerZaehler > AnzahlDerZulaessigenFehler) // Fehlermeldung, das Verbindungsaufbau mehr als AnzahlDerZulaessigenFehler mal gescheitert ist ... end; // oder if not DatenbankKomponenten.Active then begin // Fehlermeldung, das Verbindungsaufbau mehr als AnzahlDerZulaessigenFehler mal gescheitert ist ... end; Wenn Windows auch noch 'ne Message "Hallo, alle wieder aufwachen, es geht weiter" schickt, dann dort die Datenbankverbindung wieder herstellen, die letzte(n) Datenbankabfrage(n) wieder öffnen ... |
AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Danke...:wink:
Der IT Fuzzi hat jetzt ein Ticket bekommen um die Einstellung zu setzen...dann schaun wir mal ob das klappt oder Message herhalten muß. :zwinker: (2 Wochen Urlaub) |
AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Zitat:
Mussten nur 1x umbauen, da MS die Events mit neueren Windows-Versionen geändert hat. |
AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Moin...8-)
Der "Workaround" hat nicht funktioniert. Zitat:
Zitat:
Frage: Was passiert mit den geladenen Daten in der Query? Kann man damit direkt weiterarbeiten? Automatisch Refresh? Manuelles Refresh? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz