none
Verbindungstest mit SqlConnection RRS feed

  • Frage

  • Hallo Forum,

    ich möchte testen ob eine Verbindung zu einem SQL Server möglich ist.

    habe folgendes versucht.

    try

    {

    SqlConnection con = new SqlConnection("Server=xxx;.....);

    con.open();

    }

    catch (Argument...)

    {

    }

    Aber das Programm bleibt immer bei con.open(); stehen und bringt die Meldung das kein Verbindung hergestellt werden kann. Dies wollte ich eigentlich abfangen.

    Was ist mein Fehler ?

    Gruß Roland

    Mittwoch, 25. August 2010 13:43

Antworten

  • Hallo Roland,

    gut, zunächst besser in diesem Fall den SqlConnectionStringBuilder benutzen.
    Du könntest z.B. ggf. auch ein ConnectTimeout o.ä. mit einbauen.

    Und dann ist in Deinem "catch(Argumen...)" evtl. ein falscher Typ ge-catched.
    nimm mal "catch (Exception exp)".

    Die SqlException hat übrigens auch eine Errors-Eigenschaft:

    [SqlException.Errors-Eigenschaft (System.Data.SqlClient)]
    http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlexception.errors.aspx

     


    ciao Frank
    Mittwoch, 25. August 2010 13:55
  • Hallo Roland,

    ich denke auch das du eine falsche Exception fängst. Also versuche mal wie Frank beschrieben hat folgenden Code:

    try
    {
      System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Server=xxx;.....");
      con.Open();
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }
    
    

    Was ich dir eigentlich als Tipp geben wollte, ist vorher zu Prüfen ob der Server erreichbar ist.

    Das kannst du mit der Ping - Klasse machen. Dadurch hast du geringere Wartezeiten für den Benutzer und deine Anwendung wirkt flüssiger.

     Beispiel:

    using System.Net.NetworkInformation;
    ...
    Ping p = new Ping();
    if (p.Send("servername").Status == IPStatus.Success)
    {
      //Server erreichbar
    }
    
    Daniel
    Donnerstag, 26. August 2010 19:00

Alle Antworten

  • Hallo Roland,

    gut, zunächst besser in diesem Fall den SqlConnectionStringBuilder benutzen.
    Du könntest z.B. ggf. auch ein ConnectTimeout o.ä. mit einbauen.

    Und dann ist in Deinem "catch(Argumen...)" evtl. ein falscher Typ ge-catched.
    nimm mal "catch (Exception exp)".

    Die SqlException hat übrigens auch eine Errors-Eigenschaft:

    [SqlException.Errors-Eigenschaft (System.Data.SqlClient)]
    http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlexception.errors.aspx

     


    ciao Frank
    Mittwoch, 25. August 2010 13:55
  • Hallo Roland,

    ich denke auch das du eine falsche Exception fängst. Also versuche mal wie Frank beschrieben hat folgenden Code:

    try
    {
      System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Server=xxx;.....");
      con.Open();
    }
    catch (Exception ex)
    {
      Console.WriteLine(ex.Message);
    }
    
    

    Was ich dir eigentlich als Tipp geben wollte, ist vorher zu Prüfen ob der Server erreichbar ist.

    Das kannst du mit der Ping - Klasse machen. Dadurch hast du geringere Wartezeiten für den Benutzer und deine Anwendung wirkt flüssiger.

     Beispiel:

    using System.Net.NetworkInformation;
    ...
    Ping p = new Ping();
    if (p.Send("servername").Status == IPStatus.Success)
    {
      //Server erreichbar
    }
    
    Daniel
    Donnerstag, 26. August 2010 19:00
  • Hallo Daniel,

    Danke für die Info. Ich kontrolliere nicht nur den Server, sondern auch ob die DB erreichbar / vorhanden ist.

    Gruß  Roland

     

    Montag, 30. August 2010 12:53