¿Hay alguna diferencia entre SqlCommand.CommandTimeout
y SqlConnection.ConnectionTimeout
en .NET?
.net
sqlconnection
sqlcommand
Dhanapal
fuente
fuente
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.
fuente
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 excedeSqlCommand.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.fuente
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 yExecuteXXX
se ha llamado a uno de los métodos en el objeto Command.fuente
Información adicional
El valor predeterminado de
CommandTimeout
es 30 segundos. Cero (0) indica que no hay límite. Puede establecer elCommandTimeout
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 elConnectionTimeout
valor en ambos archivos de codificación y configuración.fuente
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1 set LOCK_TIMEOUT = 600//set TIMEOUT with ms
fuente
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
fuente