¿Hay alguna diferencia entre SqlCommand.CommandTimeout
y SqlConnection.ConnectionTimeout
en .NET?
Respuestas:
Si. CommandTimeout
es el tiempo que puede tardar un solo comando en completarse. ConnectionTimeout
es el tiempo que puede tomar establecer una conexión con el servidor para empezar.
Por ejemplo, es posible que esté ejecutando consultas de ejecución relativamente larga; está perfectamente bien que tomen 10 minutos en completarse, pero si para empezar, tomara 10 minutos hacer la conexión, sabría que algo andaba muy mal.
SqlCommand.CommandTimeout
= límite de tiempo de espera para su consulta SQL. Medios, cuánto tiempo un (por ejemplo: SELECT
, UPDATE
) consulta pueden tomar para su ejecución. Si excede SqlCommand.CommandTimeout
, detiene la ejecución. Se producirá un error de tiempo de espera del comando.
SqlConnection.ConnectionTimeout
= límite de tiempo de espera para su conexión. Significa cuánto tiempo su objeto de conexión puede intentar conectarse. Si supera el tiempo especificado, deja de conectarse. Se producirá un error de tiempo de espera de conexión.
ConnectionTimeout
especifica la duración de la espera antes de que se agote el tiempo al intentar abrir un archivoSqlConnection
. Es relevante para elConnection.Open()
comando.
mientras
SqlCommand.CommandTimeout
especificó la duración que debe esperar un SqlCommand antes de que se agote el tiempo de espera. Esto sucede después de que se ha abierto una conexión y ExecuteXXX
se ha llamado a uno de los métodos en el objeto Command.
Información adicional
El valor predeterminado de CommandTimeout
es 30 segundos. Cero (0) indica que no hay límite. Puede establecer el CommandTimeout
valor solo en Codificación.
El valor predeterminado de ConnectiontTimeout
es 15 segundos. Cero (0) también indica que no hay límite. Se obtendrá un valor menor que cero (valor menos) ArgumentException
. Puede establecer el ConnectionTimeout
valor en ambos archivos de codificación y configuración.
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1
set LOCK_TIMEOUT = 600//set TIMEOUT with ms
Nota rápida sobre CommandTimeout, ya que es una propiedad de los objetos Connection y Command ...
La configuración CommandTimeout en un objeto Connection no tiene ningún efecto sobre la configuración CommandTimeout en un objeto Command en la misma Connection; es decir, la propiedad CommandTimeout del objeto Command no hereda el valor del valor CommandTimeout del objeto Connection.
Por lo tanto, la configuración de CommandTimeout en un objeto Connection solo afecta a los comandos ejecutados bajo el objeto Connection solamente (sin usar un objeto Command).
Por ejemplo, cuando se conecta a un proceso almacenado y agrega parámetros al objeto de comando, y ejecuta el objeto de comando usando la conexión de un objeto de conexión, entonces debe establecer CommandTimeout en el objeto de comando y ConnectionTimeout en el objeto de conexión para anular ambos valores predeterminados. Establecer CommandTimeout en el objeto de conexión no anulará el tiempo de espera predeterminado para los comandos del objeto de comando.
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