2009-07-30 6 views
3

Je cherche un moyen de vérifier la disponibilité de SQL Server comme ceci MySQL solution, à moins qu'il y ait une meilleure méthode.Vérifiez si un serveur SQL est disponible par programmation?

Mon plan est de vérifier si l'instance SQL Server est en haut/en bas, et si elle est en panne puis afficher un message à l'utilisateur, tout via un try/catch.

+0

est le serveur sql local ou distant (ou les deux)? – djangofan

+0

distant, c'est-à-dire sur un serveur différent mais à l'intérieur du même domaine –

Répondre

1

Je voudrais créer une nouvelle chaîne de connexion avec un très faible délai d'attente de connexion

Dim Conn As New SqlClient.SqlConnection("server=127.0.0.1;uid=username;pwd=password;database=mydatabasename;Connect Timeout=5") 

     Try 
      Conn.Open() 
     Catch exSQL As SqlClient.SqlException 
     If exSQL.Message.ToUpper().Contains("LOGIN FAILED") Then 
      MsgBox("Invalid User/Password") 
     Else 
      MsgBox("SQL Error: " & exSQL.Message) 
     End If 
     Exit Sub 
     Catch ex As Exception 
      MsgBox("Something went wrong.") 
      Exit Sub 
     Finally 
      Conn.Close() 
      Conn.Dispose() 
     End Try 
1

Voici une solution de programmation utilisant SMO (objets de gestion du serveur) ...

Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(); 
try 
{ 
    // You can modify your connection string here if necessary 
    server.ConnectionContext.ConnectionString = "Server=servername; User ID=username; Password=password"; 
    server.ConnectionContext.Connect(); 
} 
catch (Exception ex) 
{ 
    // Handle your exception here 
} 
if (server.ConnectionContext.IsOpen) 
{ 
    // Show message that the server is up 
} 
else 
{ 
    // Show message that the server is down 
} 
+0

Quel est l'avantage de faire cela simplement en essayant simplement d'ouvrir une SqlConnection et si elle échoue, réagissez-y? –

+1

Eh bien, honnêtement, dans cet exemple, il n'y a pas beaucoup de différence que je peux voir. En général, j'ai tendance à préférer utiliser SMO parce qu'il est si puissant, permettant de "programmer tous les aspects de la gestion de Microsoft SQL Server" - vous pouvez faire pratiquement tout ce que vous voulez. Mais il semble que pour cette opération simple, ceci ou SqlConnection le ferait aussi bien. http://msdn.microsoft.com/fr-fr/library/ms162169.aspx – Donut

1

Je voudrais ajouter une exception en haut de votre try/catch/enfin pour rechercher le statut de connexion sql. J'oublie l'objet et la propriété, mais je suis sûr que vous pouvez le découvrir. La façon SQL typique d'interrogation (que je suis habitué):

using (SqlConnection) { 
     try { 
      // open connection, try to execute query and fetch results 


     } catch (Connection.IsOpen) { 
     // add the catch exception for connection status here 


     } finally { 
      //close connection 
     } 
    } 
Questions connexes