SQL-Abfragestatus einer Datenbank

Biasto

Grünschnabel
Hallo...

habe folgendes Problem,
programmiere zur Zeit eine Visualisierung, in der wir auf Prozessdaten einer Datenbank zugreifen. Hierfür dient ein implementiertes ViewGrid einer Tabelle.

Nun ist es sehr unschön, da diese Funktionen in der Visualisierung als synchrone Befehle abgearbeitet werden, dass wenn Probleme mit der Datenbank auftreten, die Visualsisierung für diese Zeit "tot" ist und nicht mehr bearbeitet wird!

Jetzt meine Frage, ob es über einen SQL-Befehl eine Möglichkeit gibt, eine Art Statusabfrage zu einer Datenbank zu senden, um frühzeitig zu erkennen, das z.B. die Datenbank nicht verfügbar ist, weil der Server "down" ist o.ä.

Ebenso meine Frage, ob man die Exceptions bei Datenbankbefehlen irgendwie abfangen kann?

Hoffe, mir ist noch zu helfen ;)
vielen Dank im voraus

Biasto
 
Hi und willkommen im Forum

Um deine Frage zu beantworten, wäre es nicht schlecht, wenn du noch ein paar zusätzlich Infos rausrückst.

1. Um welches DBMS dreht's sich?
2. Wie greifst du darauf zu?
3. Mit welcher Programmiersprache gestaltest du das Frontend?

Jetzt meine Frage, ob es über einen SQL-Befehl eine Möglichkeit gibt, eine Art Statusabfrage zu einer Datenbank zu senden, um frühzeitig zu erkennen, das z.B. die Datenbank nicht verfügbar ist, weil der Server "down" ist o.ä.
Lässt sich übrigens leicht feststellen, da nach kurzer Zeit ein ConnectionTimeOut beim Verbindungsaufbau kommt ;)
 
Hallo,

es geht um eine Client-Server-Architektur...

der Client, auf dem die SQL-Abfragen generiert werden, fordert die Daten direkt auf dem Server an. Auf dem Server läuft als DBMS MSSQL.

Als Frontend wird die Visualisierungssoftware Wonderware InTouch genutzt, in der mit der InTouch-eigenen Programmiersprache (Basic ähnlich) über vorhandene Funktionen die SQL-Statements abgegeben werden.

Meine Frage zielt eher dahin, ob es die Möglichkeit gibt, eine Art Poll oder Ping in Richtung der Datenbank zu senden, um zu schauen, ob diese vorhanden ist, und nur dann, wenn dies erfolgrecih war, dann auch auf die Datenbank zuzugreifen, weil eben das Problem besteht, dass zwischen der Abfragezeit eines SQL-Befehls und dem entsprechenden Timeouts, die Visualisierung "stillsteht" und gar keinen Code oder I/O-Werte bearbeitet
 
Dann hättest du mit dem Test vorweg aber immer noch das Problem.
SQL an sich bietet keine Möglichkeit, hab jedenfalls noch nichts gesehen. Und ich glaub auch nicht, dass die DBMS sowas anbieten.
Du kannst den Status der Verbindung abfragen, wenn der "Offen" ist, kannst du auch relativ sich sein, dass die DB-Instanz läuft.
Eine Art Ping oder so in die Richtung würde aber deinen Client auch noch blockieren. Da Anfragen immer (ok, meist) ein TimeOut besitzen. Und du musst trotzdem auf eine Bestetigung warten, kommt keine läufst du in ein TimeOut.

Einzige Möglichkeit, die ich sehe, wäre wenn dann nur über unterschiedliche Threads die Anwendung laufen zu lassen, vorausgesetzt diese Programmiersprache unterstützt das.
 

Neue Beiträge

Zurück