CommandTimeout ne fonctionne pas
Je suis en train de modifier le délai d'attente pour un SqlCommand requête, dans une méthode qui teste ma connexion pour une chaîne de connexion. Le code est similaire à ceci:
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand("SELECT ...", connection);
cmd.CommandTimeout = 10;
connection.Open();
SqlDataReader reader = cmd.ExecuteReader();
...
connection.Close();
}
Je voudrais avoir un court délai d'attente ici, car je veux juste tester si cette chaîne de connexion est ok.
Mais, quel que soit le nombre que j'CommandTimeout (j'ai essayé 0, 1, 2, 4, 10, 30, 60, 120), mon temps réel obtenu pour un mannequin de la chaîne de connexion est toujours le même (temps total de fonctionnement d'environ 15 secondes).
Donc, me semble que la valeur que j'CommandTimeout est ignorée pour une raison quelconque.
Des idées pourquoi?
source d'informationauteur Flávio Ivan
Vous devez vous connecter pour publier un commentaire.
je pense que vous êtes confus qu'est-ce exactementSqlCommand.CommandTimeout
est pour. Comme par cette référence MSDN:Dans votre cas, vous êtes de l'exécution d'un DataReader et pas à pas dans votre recherche (quelle qu'elle soit). C'est en prenant un minimum de temps pour chaqueRead()
qui est pourquoi vous ne seriez pas frapper votre délai d'attente.Modifier:
Si vous utilisez une mauvaise chaîne de connexion, votre
Timeout
ne sera pas la Commande timeout, mais ça va être le temps de Connexion. La valeur par défaut est de 15 secondes. C'est le délai qui est efficace dans votre situation.Vous allez délai de l'appel de la méthode
SqlConnection.Open()
pasSqlCommand.ExecuteReader()
. Par conséquent, laConnectionTimeout
propriété va être l'efficace de la valeur de délai d'expiration.SqlConnection.ConnectionTimeout Propriété Référence MSDN
Vous devez également vérifier le délai d'attente de connexion qui par défaut est de 15 secondes.
Voir aussi http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx - si votre chaîne de connexion a contexte CommandTimeout est ignoré
Vous souhaitez modifier votre SqlConnection.ConnectionTimeout dans ce cas.
Vous pouvez également spécifier dans votre chaîne de connexion dans votre fichier de configuration: