Délai d'attente de connexion pour SQL server
Puis-je augmenter le délai d'expiration par la modification de la chaîne de connexion dans le web.config
?
- Ne lisez pas ce que j'ai fait de la pensée, le délai d'attente était de contrôle de l'exécution de la requête--il ne s'agit pas, seulement le délai d'attente pour se connecter au serveur--"connexion timeout" serait un meilleur nom. Voir stackoverflow.com/a/7976867/409856
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez ajouter
;Connection Timeout=30
à votre chaîne de connexion et spécifier la valeur que vous souhaitez.La valeur de délai d'expiration définie dans le
Connection Timeout
propriété est un temps exprimé en secondes. Si cette propriété n'est pas définie, la valeur de délai d'expiration de la connexion est la valeur par défaut (15 secondes).En outre, le réglage de la valeur de délai d'expiration pour
0
, vous indiquez que votre tentative de connexion attend un temps infini. Comme décrit dans la documentation, c'est quelque chose que vous ne devriez pas mettre dans votre chaîne de connexion:Hmmm...
Que Darin dit, vous pouvez spécifier une valeur de délai d'expiration de connexion supérieure, mais je doute que c'est vraiment la question.
Quand vous obtenez les délais de connexion, c'est généralement un problème avec l'une des opérations suivantes:
Configuration du réseau - connexion lente entre votre serveur web/boîte de dev et le serveur SQL. Augmenter le délai d'attente peut corriger cela, mais il serait sage d'enquêter sur le problème sous-jacent.
Chaîne de connexion. J'ai vu des problèmes où un mauvais nom d'utilisateur/mot de passe, pour une raison quelconque, donner une erreur de dépassement de délai au lieu de un véritable message d'erreur indiquant "accès refusé". Cela ne devrait pas arriver, mais telle est la vie.
Chaîne de connexion 2: Si vous spécifiez le nom du serveur de manière incorrecte ou incomplète (par exemple,
mysqlserver
au lieu demysqlserver.webdomain.com
), vous aurez un délai d'attente. Pouvez-vous faire un ping du serveur en utilisant le nom du serveur exactement comme spécifié dans la chaîne de connexion à partir de la ligne de commande?Chaîne de connexion 3 : Si le nom du serveur est dans votre DNS (ou fichier hosts), mais le pointage d'une mauvaise ou inaccessibles IP, vous aurez un délai d'attente plutôt qu'une machine-pas-trouvé-ish erreur.
La requête que vous avez demandé est de temporisation. Il peut ressembler à de la connexion au serveur est le problème, mais, selon la façon dont votre application est structurée, vous pourriez faire tout le chemin à l'étape où votre requête est en cours d'exécution avant l'expiration du délai.
Connexion fuites. Le nombre de processus en cours d'exécution? Combien de connexions ouvertes? Je ne suis pas sûr si cru ADO.NET effectue le regroupement de connexions, se ferme automatiquement les connexions lorsque nécessaire ala Bibliothèque d'Entreprise, ou, où tout ce qui est configuré. C'est probablement un leurre. Lorsque vous travaillez avec WCF et services web, cependant, j'ai eu des problèmes avec unclosed connexions causant des délais d'attente et d'autres comportements imprévisibles.
Choses à essayer:
Obtenez-vous un délai d'attente lors de la connexion au serveur avec SQL Management Studio? Si oui, la config réseau est probable que le problème. Si vous ne voyez pas un problème lors de la connexion avec Management Studio, le problème sera dans votre application, pas avec le serveur.
Exécuter le générateur de profils SQL, et de voir ce qui se passe réellement à travers le fil. Vous devriez être en mesure de dire si vous êtes vraiment à la connexion, ou si une requête est le problème.
D'exécuter votre requête dans Management Studio, et de voir combien de temps cela prend.
Bonne chance!
Si vous voulez changer de manière dynamique, je préfère utiliser des SqlConnectionStringBuilder .
Il vous permet de convertir ConnectionString c'est à dire une chaîne de caractères dans la classe de l'Objet, Toutes les propriétés de chaîne de connexion en deviendra Membre.
Dans ce cas, le réel avantage est que vous n'avez pas à vous inquiéter Si le ConnectionTimeout partie de chaîne de est existe déjà dans la chaîne de connexion ou pas?
Également que la création d'un Objet et il est toujours bon d'accorder de la valeur dans l'objet plutôt que de la manipulation de chaîne de caractères.
Voici l'exemple de code:
ConnectionTimeout
bien sur laSqlConnection
de type lecture seule a été pensé pour être une bonne idée.