AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

Ein Thema von hoika · begonnen am 15. Sep 2011 · letzter Beitrag vom 22. Sep 2011
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 15. Sep 2011, 09:50
Datenbank: Firebird • Version: 2 • Zugriff über: IBDAC
Hallo #,

ein Kunde hat mehrere Rechner im Netz,
einer über im WLAN.
Beim Start unserer Anwendung wird eine Connection aufgebaut,
die bleibt immer offen.
Dummwerweise ist sein WLAN-Kabel etwas brüchig ( ),
ab und zu ist das Netz weg und schon knallt die Anwendung.

FIBPlus hatte eine Art Caching-Mechanismus (wurde auch gross beworben),
damit wurde die Verbindung nach einem Abbruch incl. aller Queries
automatich wieder aufgebaut.
Bei IBDAC finde ich nichts.

Kennt jemand da eine andere Lösung.

DummyPacketInterval aus der Conf kann ich nicht benutzen,
weil der Server Windows hat.

Danke


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 15. Sep 2011, 12:57
Hallo hoika,

wir haben bei uns im Unternehmen die Erfahrung gemacht, daß es best practice ist nicht darauf zu vertrauen, daß eine Verbindung immer offen bleibt.
Die UIB und FIBPlus Datenbank Komponenten unterstützen dafür das OnConnectionLost Ereignis. Wir haben die Klassen also einfach erweitert, daß sie bei einem Verbindungsabbruch den Nutzer informieren und die Verbindung nach einer Wartezeit oder durch Nutzerinteraktion wieder aufbaut. Es ist natürlich ärgerlich wenn es grad in einer Transaktion abbricht, allerdings haben wir ja alle von ibexpert gelernt, daß Transaktionen nur so kurz wie möglich offen bleiben sollen.
Es sind nur ein paar Zeilen Code... aber sie können dir ne Menge Beschwerden ersparen.

Gruß
Marco
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 16. Sep 2011, 18:31
Hallo,

ja, aber ...
Es könnte ja eine Query aktuell offen sein?
Was dann ?



Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von MarcoWarm
MarcoWarm

Registriert seit: 10. Sep 2003
Ort: Großhennersdorf
532 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 19. Sep 2011, 05:47
Hallo hoika,


ja, aber ...
Es könnte ja eine Query aktuell offen sein?
wie lange hälst du deine Transaktionen offen? Die Daten kannst du ja auch in einem ClientDataSet halten. Du könntest dir auch eine Art Framework bauen, in dem du die Datenbankzugriffe abstrahierst. Zum Beispiel:

procedure QueryData(ASQL: String; AParams: Variant; AOutCDS: TClientDataSet); Der Vorteil hierbei ist, daß du von der DB Engine unabhängig wirst, und du nur noch an einer Stelle überhaupt DB Zugriffe hast. Wenn der Kunde dann eine andere DB will, kannst du ganz einfach umsteigen.

Gruß
Marco
Marco Warm
TUO
TheUnknownOnes.net
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 19. Sep 2011, 06:32
IBDAC unterstützt zudem disconnected DataSets
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 19. Sep 2011, 06:51
Hallo #,
Bei IBDAC finde ich nichts.
Da gibt es das Property LocalFailOver in Verbindung mit OnConnectionLost.

Hier z.B. ein Foreneintrag.

Kann man das nicht verwenden?

Frank
Frank Reim
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 19. Sep 2011, 20:05
Hallo,

das mit dem LocalFailOver ist schön,
aber dazu müsste ich einen Haufen Code umbauen ;(


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 20. Sep 2011, 07:25
Hallo,

das mit dem LocalFailOver ist schön,
aber dazu müsste ich einen Haufen Code umbauen ;(


Heiko
Bist du dir da sicher?

Man kann als Reaktion auf ein ConnectionLost eine ReconnectExecute geben, was die Verbindung veranlasst die Verbindung wieder aufzubauen und das fehlgeschlagene Statement zu wiederholen.

Irgendwann sollte man das aber doch als Fehler behandeln, denn wenn der Server mal heruntergefahren werden muss, dann hast du auf allen Clients eine Endlosschleife

Ein blödes hat es allerdings, wenn du Locks benutzt, denn die hängen an der Session, und die Session ist bei einem Verbindungsabbruch halt abgelaufen und damit sind auch die Locks für selbige erledigt.

Darum baue ich dafür eine eigene Lock-Tabelle auf, die auch solche Verbindungsabbrüche unbeeindruckt läßt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (20. Sep 2011 um 07:28 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Firebird, IBDAC, WLAN (wackliges Kabel ...), Verbindungsabbrüche

  Alt 22. Sep 2011, 06:20
Hallo,

Zitat:
was die Verbindung veranlasst die Verbindung wieder aufzubauen und das fehlgeschlagene Statement zu wiederholen.
hm, habe ich aber z.B. 2 Queries offen,
eine hält Daten offen, die andere aktualisiert auf Basis dieser Daten
über eine andere Query eine andere Tabelle (als Bsp.).

ist halt "gewachsener Code".

Hätte ich tatsächlich zum Zeitpunkt des Verbindungsabbruchs nur eine Query offen,
würde das ja gehen, es sei denn ich merke mir alle Queries:
SQL-Statement, Parameter (?), Position (Cursor !!!). ;(


Heiko
Heiko
  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 10:38 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