AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Thema durchsuchen
Ansicht
Themen-Optionen

DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

Ein Thema von haentschman · begonnen am 30. Sep 2022 · letzter Beitrag vom 12. Dez 2022
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

  Alt 30. Sep 2022, 08:57
Datenbank: MSSQL • Version: 2017 • Zugriff über: FireDAC
Hallöle...

es kommt jeden Mittag bei einem Benutzer vor:
Zitat:
exception message : [FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 11.0]TCP-Anbieter: Eine vorhandene Verbindung wurde vom Remotehost geschlossen.
Ursache:
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...

Frage:
Auf die Message des Energiesparmodus zu reagieren und die Connection schließen? Und über "AutoConnect" wieder öffnen?


Danke

Geändert von haentschman (30. Sep 2022 um 09:00 Uhr)
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
599 Beiträge
 
Delphi XE6 Enterprise
 
#2

AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

  Alt 30. Sep 2022, 09:38
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.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#3

AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

  Alt 30. Sep 2022, 09:59
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:
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;
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.

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 ...
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

  Alt 30. Sep 2022, 10:30
Danke...

Der IT Fuzzi hat jetzt ein Ticket bekommen um die Einstellung zu setzen...dann schaun wir mal ob das klappt oder Message herhalten muß. (2 Wochen Urlaub)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

  Alt 30. Sep 2022, 10:48
Zitat:
Frage:
Auf die Message des Energiesparmodus zu reagieren und die Connection schließen? Und über "AutoConnect" wieder öffnen?
Haben wir so gemacht.
Mussten nur 1x umbauen, da MS die Events mit neueren Windows-Versionen geändert hat.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: DB: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

  Alt 12. Dez 2022, 07:30
Moin...

Der "Workaround" hat nicht funktioniert.

Zitat:
Auf die Message des Energiesparmodus zu reagieren und die Connection schließen? Und über "AutoConnect" wieder öffnen?
...mache ich jetzt auch.
Zitat:
und die Connection schließen
Schießen oder eher Offline?

Frage:
Was passiert mit den geladenen Daten in der Query? Kann man damit direkt weiterarbeiten? Automatisch Refresh? Manuelles Refresh?

Geändert von haentschman (12. Dez 2022 um 08:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz