Überprüfen ob noch mit Datenbank verbunden

19/12/2007 - 15:21 von andi rickenbach | Report spam
Hallo

Ich arbeite mit Vb.net sowie SQL-Server 2005 und MS Access. Ich versuche
abzufangen, wenn die Verbindung zur Datenbank nicht mehr vorhanden ist. Das
heisst, ich bin mit der Applikation normal mit der DB verbunden, und jetzt
ziehe ich das Netzwerkkabel (die DB ist auf einem Server, egal ob das
MSAccess.mdb-File oder der SQL Server).

Wie bekomme ich nun ein Event wenn ich nicht mehr verbunden bin?

Bei Access bekomme ich das folgendermassen hin, weis aber nicht wie gut
diese Idee ist: Ich fange das Event der Applikation ab und zwar...
Private Sub MyApplication_NetworkAvailabilityChanged( _
ByVal sender As Object, _
ByVal e As Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs) _
Handles Me.NetworkAvailabilityChanged

...danach schaue ich mit System.io.file.exists(Pfad von MDB-File) ob die DB
existiert bzw. ob ich zugriff habe auf das File. Wenn nicht, ist das
Netzwerkkabel getrennt worden. Wenn Zugriff auf File kann man normal der
ConnectionState abfragen. Hierzu finde ich lustig, das der ConnectionState
nicht àndert, wenn das Netzkabel gezogen wird. Wenn es gezogen wird, ist der
State immer noch auf Open, obwohl ich gar nicht mehr verbunden sein kann.
Naja, so habe ich das mit Access gelöst.

Wie löse ich das nun mit SQL-Server 2005? Da ich nur der Servername kenne
und nicht das File, wo die Daten physikalisch effektiv abgelegt werden, kann
ich auch nicht auf File.Exists schauen.

Habt ihr da Ideen und/oder Verbesserungsvorschlàge?

Vielen herzlichen Dank.
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
19/12/2007 - 17:20 | Warnen spam
Hallo Andi,

"andi rickenbach" schrieb

Bei Access bekomme ich das folgendermassen hin, weis aber nicht wie gut
diese Idee ist: Ich fange das Event der Applikation ab und zwar...
Private Sub MyApplication_NetworkAvailabilityChanged( _
ByVal sender As Object, _
ByVal e As Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs) _
Handles Me.NetworkAvailabilityChanged

...danach schaue ich mit System.io.file.exists(Pfad von MDB-File) ob die DB
existiert bzw. ob ich zugriff habe auf das File. Wenn nicht, ist das
Netzwerkkabel getrennt worden. Wenn Zugriff auf File kann man normal der
ConnectionState abfragen.



Aua. Warum rufst Du nicht einfach irgendwas aus der Datenbank ab und packst
den entsprechenden Code in einen Try ... Catch Block? Das funktioniert dann
auch mit SQL Server und sonstigen DBMS.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen