2010-03-23 9 views
1

J'essaie de me connecter à un serveur que l'utilisateur entre. Quand le serveur n'existe pas, je voudrais donner un feedback rapide à l'utilisateur final afin qu'il puisse corriger ce qu'il a tapé.C#: DBConnection.Open() timeout est trop long

Existe-t-il un moyen de tester si un serveur existe avant d'essayer de se connecter?

Merci

Répondre

2

Votre connexion DBC a-t-elle une propriété ConnectionTimeout? Essayez de régler ceci à un petit nombre.

+0

Merci, je vais essayer ça. – leo

0

Vous pouvez utiliser SQL Server Management Objects (SMO) pour obtenir une liste des serveurs SQL. Il y a un exemple de comment obtenir une liste de serveurs here. L'énumération des serveurs peut prendre un certain temps, mais vous pouvez toujours la démarrer en arrière-plan lorsque l'application se charge afin qu'elle soit prête lorsque l'utilisateur doit sélectionner un serveur.

+0

Merci Je vais vérifier, même si je ne comprends pas comment je pourrais lister tous les serveurs disponibles sans rien spécifier. Et j'ai besoin de la solution pour travailler à la fois pour Oracle et MsSQL. – leo

+0

La recherche des serveurs Oracle peut poser un problème. L'objet SMO possède une fonction EnumAvailableSqlServers qui analyse le réseau pour tous les serveurs SQL. Il faut quelques secondes pour terminer, mais c'est génial pour construire un formulaire où l'utilisateur peut voir tous les serveurs SQL qui sont visibles sur le réseau. – TLiebe

0

Vous pouvez toujours envoyer une requête ping au serveur ou vérifier si un port donné est ouvert] mais cela ne vous garantit pas que ce serveur ne sera pas déconnecté juste avant de se connecter pour de vrai.

1

La propriété ConnectionTimeout dans DbConnection n'a pas de paramètre. Il attend 15 secondes. Vous devez spécifier le délai d'attente dans votre chaîne de connexion. "Connection Timeout" dans la chaîne de connexion est en secondes.

string connStr = "Data Source=(local);Initial Catalog=AdventureWorks;" + 
       "Integrated Security=SSPI;Connection Timeout=5"; 
Questions connexes