2012-04-13 11 views
0

Ich habe eine C# -Konsolenanwendung, bei der es sich im Wesentlichen um einen langen Stapelverarbeitungsprozess handelt, der Daten über Nacht in vielen verschiedenen Datenbanken verarbeitet. Was ist der richtige oder bevorzugte Weg, grundlegende Datenbankkonnektivität zu Beginn dieser Art von Programm zu testen? Ich bin auf das Problem mit einem abgelaufenen Datenbankpasswort für eine meiner Verbindungen gestoßen, das von der Ausnahmebehandlung abgefangen wurde, aber ich möchte gleich zu Beginn auf grundlegende Konnektivität testen.Testen der Datenbankkonnektivität in der C# -Konsolenanwendung

Würde eine einfache SELECT-Abfrage ausreichen oder gibt es eine effizientere Möglichkeit, dies für zahlreiche Datenbanken zu tun?

Antwort

4

IMHO der einfachste Weg versucht, eine Verbindung zur Datenbank herzustellen, und wenn Sie einen Fehler haben, geben Sie auf.
Da Sie eine Nacht Charge laufen, ist es nicht wichtig, sofort den Grund zu verstehen und es zu lösen.
So etwas wie diese

using(SqlConnection conn = new SqlConnection(connectionString)) 
{ 
    try 
    { 
     conn.Open(); 
     // Do what you please here   
    } 
    catch (Exception ex) 
    { 
     // Write error to file 
     File.Append(..., 
      DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + " " + 
      ex.Message); 
    } 
    finally 
    { 
     conn.Close(); 
    } 
} 

Am nächsten Morgen Sie Datei auf Fehler überprüfen ...

+1

@ OlivierJacot-Descombes: Ich verstehe nicht ... was ist los mit meiner Antwort? – Marco

+0

Die Antwort sieht gut aus für mich. Randnotiz: Müssen Sie die 'conn.Close()' verwenden, wenn sie in einer 'using' Anweisung enthalten ist? –

+0

@ShawnH .: Ich bin mir nicht sicher, ich sollte es testen. Ich habe mich gerade richtig gewundert, als ich eine Antwort gepostet habe, aber da ich mir nicht sicher bin ... nun, es ist besser sicher zu gehen, dass es geschlossen ist !! :) – Marco

0
'Connection.open` 

ist der einfache Weg, um festzustellen, ob Sie zu db oder keine Verbindung herstellen können.

Wenn Sie eine SqlException mit der Nummer 18487 oder 18488 erhalten, zeigt dies an, dass das Passwort geändert wurde.

Connection.changePassword

0

Sie brauchen keine Abfrage auszuführen. Wenn Sie SqlConnection Passieren der Verbindungszeichenfolge verwenden, können Sie nur versuchen, die Verbindung zu öffnen() und Sie erhalten eine Ausnahme, wenn man nicht So etwas wie eine Verbindung herstellen können:

try 
{ 
    var cnn = new SqlConnection(connectionString); 
    cnn.Open(); 
} 
catch 
{ 
    // connection failed, do something 
} 
0

Opening (und schließen dann) eine Verbindung sollte ausreichen, um das Passwort zu testen. Das sagt Ihnen jedoch nicht, ob ein db-Benutzer berechtigt ist, auf bestimmte Tabellen zuzugreifen.

Verwandte Themen