AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Delphi 10 Seattle: Zugriffsverletzung nach Reconnect auf DBSM
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 10 Seattle: Zugriffsverletzung nach Reconnect auf DBSM

Ein Thema von Tom87 · begonnen am 2. Mär 2021 · letzter Beitrag vom 2. Mär 2021
Antwort Antwort
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
Tom87

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

AW: Delphi 10 Seattle: Zugriffsverletzung nach Reconnect auf DBSM

  Alt 2. Mär 2021, 13:06
Hi Leute,
Thema hat sich erledigt - hab mir die Antwort selbst gegeben.

- Bei Verwendung von Pooled := true:
FDConnection und FDQery müssen bei jedem Aufruf neu erzeugt werden.

deshalb arbeite ich in diesem Fall mit pooled := false. In diesem Fall können die einmal erzeugte FCConnection und FDQuery weiter verwendet werden.

Grüße
Thomas
  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 05:47 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