Einzelnen Beitrag anzeigen

Tom87

Registriert seit: 2. Mär 2021
2 Beiträge
 
#1

Delphi 10 Seattle: Zugriffsverletzung nach Reconnect auf DBSM

  Alt 2. Mär 2021, 11:01
Datenbank: MSSQL • Version: 2016 • Zugriff über: FIREDAC
Hallo,

ich nutze untenstehenden Code für einen MSSQL Datenbankzugriff. Dieser funktioniert auch so weit wenn physikalisch eine Netzwerkverbindung besteht.
Nun folgendes:
erster Verbindungsabbruch
1. stecke ich das Netzwerkkabel ab -> es tritt wie erwartet eine Exception ekUKViolated auf
2. stecke ich das Netzwerkkabel wieder an -> Zugriff auf DB wieder möglich
zweiter/weitere Verbindungsabbrüche
3. stecke ich das Netzwerkkabel ein weiteres mal ab, erster Versuch -> Exception ekUKViolated
Achtung jetzt wird es interessant:
4. weiter(e) Versuch(e) bei abgesteckten Netzwerkkabel -> Exception Zugriffsverletzung!!
5. auch wenn Netzwerkkabel wieder eingesteckt wird, tritt diese Zugriffsverletzung auf und man kommt ohne Neustart der Anwendung nicht mehr aus der Nummer raus.

Woran könnte das liegen?
- müssen FDQuery oder FDConnection erneut erzeugt werden?
- muss FDManager.Active getoggelt werden?
- könnte die Einstellung pooling an der Stelle Probleme bereiten?

Delphi-Quellcode:
procedure TFormMain.Btn_SQLCommandClick(Sender : TObject);
begin
  ZeitmessungStart;
  FDQuery.SQL.Text := ED_SQLCommand.Text;
  try
    try
      FDConnection.Connected := true;
      FDQuery.Open();
    except // Beispiel zur Fehlerbehandlung
      on E: Exception do begin
        Sleep(0);
      end;
      on E: EFDDBEngineException do begin
        if E.Kind = ekUKViolated then
          ShowMessage('Hier Fehlerbehandlung');
        raise;
      end;
    end;
  finally
    ZeitmessungStop;
  end;
end;
Einstellungen:
Code:
DriverID=MSSQL
pooled=true
Danke,
Thomas
  Mit Zitat antworten Zitat