Y a-t-il une différence entre SqlCommand.CommandTimeout
et SqlConnection.ConnectionTimeout
dans .NET?
.net
sqlconnection
sqlcommand
Dhanapal
la source
la source
Réponses:
Oui.
CommandTimeout
est le temps qu'une seule commande peut prendre pour se terminer.ConnectionTimeout
est le temps nécessaire pour établir une connexion au serveur au départ.Par exemple, vous exécutez peut-être des requêtes relativement longues - il est parfaitement normal qu'elles prennent 10 minutes, mais si cela prenait 10 minutes pour démarrer la connexion, vous sauriez que quelque chose n'allait vraiment pas.
la source
SqlCommand.CommandTimeout
= délai d'expiration de votre requête SQL. Les moyens, combien de temps un (par exemple:SELECT
,UPDATE
) une requête peut prendre pour son exécution. S'il dépasseSqlCommand.CommandTimeout
, alors il arrête l'exécution. Une erreur de temporisation de commande se produira.SqlConnection.ConnectionTimeout
= délai d'expiration de votre connexion. Cela signifie combien de temps votre objet de connexion peut essayer de se connecter. S'il dépasse la durée spécifiée, la connexion s'arrête. Une erreur de temporisation de connexion se produira.la source
ConnectionTimeout
spécifie la durée d'attente avant l'expiration du délai lors de la tentative d' ouverture d' un fichierSqlConnection
. Il est pertinent pour laConnection.Open()
commande.tandis que
SqlCommand.CommandTimeout
spécifié la durée pendant laquelle un SqlCommand doit attendre avant l'expiration du délai. Cela se produit une fois qu'une connexion a été ouverte et qu'une desExecuteXXX
méthodes a été appelée sur l'objet Command.la source
Information additionnelle
La valeur par défaut
CommandTimeout
est de 30 secondes. Zéro (0) indique aucune limite. Vous ne pouvez définir laCommandTimeout
valeur que dans le codage.La valeur par défaut
ConnectiontTimeout
est de 15 secondes. Zéro (0) indique également aucune limite. Une valeur inférieure à zéro (valeur moins) sera obtenueArgumentException
. Vous pouvez définir laConnectionTimeout
valeur dans les fichiers de codage et de configuration.la source
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1 set LOCK_TIMEOUT = 600//set TIMEOUT with ms
la source
Note rapide concernant CommandTimeout, car il s'agit d'une propriété des objets Connection et Command ...
Le paramètre CommandTimeout sur un objet Connection n'a aucun effet sur le paramètre CommandTimeout sur un objet Command sur la même connexion; autrement dit, la propriété CommandTimeout de l'objet Command n'hérite pas de la valeur de la valeur CommandTimeout de l'objet Connection.
Ainsi, le paramètre CommandTimeout sur un objet Connection affecte uniquement les commandes exécutées sous l'objet Connection uniquement (sans utiliser d'objet Command).
Par exemple, lorsque vous vous connectez à un processus stocké et que vous ajoutez des paramètres à l'objet de commande et que vous exécutez l'objet de commande à l'aide de la connexion d'un objet de connexion, vous devez définir CommandTimeout sur l'objet Command et ConnectionTimeout sur l'objet Connection pour remplacer les deux les valeurs par défaut. La définition de CommandTimeout sur l'objet de connexion ne remplacera pas le délai par défaut pour les commandes d'objet de commande.
https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/commandtimeout-property-ado?view=sql-server-ver15 https://docs.microsoft.com/en-us / sql / ado / reference / ado-api / connectiontimeout-property-ado? view = sql-server-ver15
la source