AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Verbindung zur Datenbank überprüfen
Thema durchsuchen
Ansicht
Themen-Optionen

Verbindung zur Datenbank überprüfen

Ein Thema von t0mmy · begonnen am 16. Jan 2012 · letzter Beitrag vom 17. Jan 2012
Antwort Antwort
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#1

Verbindung zur Datenbank überprüfen

  Alt 16. Jan 2012, 16:56
Datenbank: MSSQL • Version: 2008 • Zugriff über: ADO
Hallo

Gibt es eine möglichkeit den Zustand der ADO Connection zu prüfen ja ich weiss es kommt sicherlich sowas wie state aber das hab ich schon probiert.
Das Problem is wenn ich eine Verbindung aufbaue und die Funktioniert auch.. dann ist das State gesetzt und wird wenn sich die datenbank von sich selbst verabschiedet nicht zurückgesetzt. D.h. ich hab immer ein State das True is.

Ein andauerndes .open der Datenbank will ich nicht machen denn das kostet nur prozessleistung.

Gibt es da eine andere Methode?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Verbindung zur Datenbank überprüfen

  Alt 16. Jan 2012, 17:21
wenn du mit query's arbeitest hast Du das Problem nicht;
Delphi-Quellcode:

Myquery.Sql.Text:='select alles from mytable';
Myquery.Open;
if not(Myquery.Eof) then
....
....
MyQuery.Close;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Verbindung zur Datenbank überprüfen

  Alt 16. Jan 2012, 17:27
Hallo...

Zitat:
wenn sich die datenbank von sich selbst verabschiedet
...wenn die Putzfrau über das Netzwerkkabel stolpert bekommt das die Connection nicht mit. Imho ist die einzige Methode um sicher zu gehen vor dem eigentlichen Statement ein kleines SELECT abzusetzen und ggf. den Fehler auszuwerten.
Ob das jetzt so sinnvoll ist wage ich zu bezweifeln...aber ich lasse mich gern belehren
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: Verbindung zur Datenbank überprüfen

  Alt 16. Jan 2012, 18:16
Imho ist die einzige Methode um sicher zu gehen vor dem eigentlichen Statement ein kleines SELECT abzusetzen und ggf. den Fehler auszuwerten.
Auch das SQL Server Managment Studio sendet in regelmässigen Abständen eine kleine SQL-Abfrage um die Verbindung zu testen.
Man kann dazu z.B. folgende Abfragen verwenden:
SQL-Code:
SELECT @@version
-- oder
SELECT 1
Nachtrag:
Der SQL Server bzw. die Treiberschicht auf den Clients ist ziemlich zickig wenn es zu einer Verbindungsunterbrechung kommt.
Wenn z.B. der Client in den Sleep-Modus geht ist die Connection unterbrochen.
Oder wenn ein DNS-Server nicht rechtzeitig antwortet; dito.
Der Treiber ist leider zu doof um die Connection im Hintergrund neu aufzubauen.
Normalerweise kann dann die Anwendung auch nicht mehr gerettet werden.
Man müsste die Connection schliesen und erneut öffnen.
Dabei werden aber auch alle Queries und Tabellen die zu dem Zeitpunkt offen waren geschlossen.
Andreas

Geändert von shmia (16. Jan 2012 um 18:25 Uhr)
  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
 
#5

AW: Verbindung zur Datenbank überprüfen

  Alt 16. Jan 2012, 18:32
Alternativ kann man z.B. auch UniDAC einsetzen.
Da gibt es eine integrierte Fehlbehandlung bei Verbindungsabbrüchen, die man auch beeinflussen kann.

Problematisch ist und bleibt bei einem Verbindungsabbruch immer, dass die originale Session auf dem Server futsch ist, und damit alles was an selbiger hängt.

Locks, Session-Variablen, etc.
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)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Verbindung zur Datenbank überprüfen

  Alt 16. Jan 2012, 18:49
Man müsste die Connection schliesen und erneut öffnen.
Dabei werden aber auch alle Queries und Tabellen die zu dem Zeitpunkt offen waren geschlossen.
Bei dbExpress Clientanwendungen mache ich das regelmäßig so - nach fast jedem Öffnen eines Statements wird die Datenbankverbindung geschlossen, Ausnahmen sind Aktionen die mehrere Queries umfassen (Transaktionen).

Tabellen in Grids etc. werden weiterhin angezeigt, wenn ein ClientDataSet dahintersteht.
Michael Justin
  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
 
#7

AW: Verbindung zur Datenbank überprüfen

  Alt 16. Jan 2012, 18:54
Wenn man die DataSets alle in ClientDataSets packt dann kann man auch bei der ADOConnection KeepConnection auf False setzen und die Verbindung zur DB wird automatisch geschlossen, wenn kein Zugriff mehr erfolgt.
Der Aufbau erfolgt natürlich auch automatisch.
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)
  Mit Zitat antworten Zitat
t0mmy

Registriert seit: 28. Jul 2010
431 Beiträge
 
Delphi 2010 Architect
 
#8

AW: Verbindung zur Datenbank überprüfen

  Alt 17. Jan 2012, 09:50
###Edit: Danke, Hat sich schon erledigt. Ich versuch jetzt jedesmal eine Verbindung zu erstellen und hab mich da bissal mit den Timeout zeiten von den ADOConnections gespielt.

Danke trotzdem

Geändert von t0mmy (17. Jan 2012 um 14: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 00:12 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