2017-04-10 3 views
0

Dans une application de la console j'ai une chaîne de connexion comme ceci:sql: délai de connexion défini dans la chaîne de connexion

Data Source=localhost;Initial Catalog=database_name;Integrated Security=True;Connect Timeout=100 

J'ai lu here que je dois ajouter Connect Timeout à la chaîne de connexion pour définir le délai d'attente, mais si je lance une requête qui contient

WAITFOR DELAY '00:00:40'; 

Je vais obtenir une exception de délai d'attente, il semble donc que la timeoput de la chaîne de connexion est ignorée. alors comment définir le délai d'attente dans la chaîne de connexion (et non sur les objets de connexion ou de commande)?

+0

Comment l'utilisez-vous? Grâce à un objet SqlConnection? Il y a une propriété Timeout sur que vous pouvez définir à la place .... – Milney

+0

mais je dois définir le délai d'expiration uniquement dans la chaîne de connexion, car cette chaîne servira à créer de nombreuses connexions ... –

+0

le délai de connexion dans la chaîne uniquement affecte le temps nécessaire pour CONNECTER au serveur, pas pour exécuter des requêtes. La seule façon est de le définir sur l'objet SqlConnection et SqlCommand désolé – Milney

Répondre

2

Il y a deux délais d'attente relatifs aux connexions SQL/commandes - il y a un délai d'attente connexion, qui affecte la durée de connexion est prêt à attendre lorsque vous essayez de l'ouvrir, et une commande délai qui affecte la durée une commande individuelle en cours d'exécution attendra.

Vous devez ajuster le second d'entre eux - par ex. définir la propriété CommandTimeout sur l'objet SqlCommand.

+0

et existe-t-il un moyen de définir le délai d'expiration de la commande dans la chaîne de connexion ou non? –

+0

Je n'ai jamais entendu parler de ça. Mais cela ne veut pas dire qu'il n'y en a pas. N'avez-vous pas dit que cela a fonctionné (c'est-à-dire qu'il y a eu une exception de timeout)? –

+0

@BudaGavril - non, il n'y en a pas. La valeur par défaut de 30 secondes n'est pas déraisonnable. Cela devrait être une situation * exceptionnelle * où vous devez définir un délai d'attente plus long/infini. –

0

Il n'est pas ignoré, c'est le comportement ... s'il expire, il déclenche une exception. Si ce n'est pas le cas, il s'exécutera jusqu'à ce que la requête soit renvoyée. Utilisez simplement un bloc try-catch et faites ce que vous voulez quand l'exception est levée.

+0

Ok, mais est-il un moyen de définir le délai d'attente à 10 minutes dans la chaîne de connexion? –