Existe alguma diferença entre SqlCommand.CommandTimeout
e SqlConnection.ConnectionTimeout
no .NET?
.net
sqlconnection
sqlcommand
Dhanapal
fonte
fonte
Respostas:
Sim.
CommandTimeout
é quanto tempo um único comando pode levar para ser concluído.ConnectionTimeout
é quanto tempo pode levar para estabelecer uma conexão com o servidor para começar.Por exemplo, você pode estar executando consultas de execução relativamente longa - é perfeitamente normal que levem 10 minutos para serem concluídas, mas se demorasse 10 minutos para fazer a conexão para começar, você saberia que algo estava muito errado.
fonte
SqlCommand.CommandTimeout
= limite de tempo para sua consulta SQL. Meios, quanto tempo um (por exemplo:SELECT
,UPDATE
) consulta pode demorar para sua execução. Se excederSqlCommand.CommandTimeout
, interrompe a execução. Ocorrerá um erro de tempo limite do comando.SqlConnection.ConnectionTimeout
= limite de tempo limite para sua conexão. Significa quanto tempo seu objeto de conexão pode tentar se conectar. Se exceder o tempo especificado, ele para de conectar. Ocorrerá um erro de tempo limite de conexão.fonte
ConnectionTimeout
especifica a duração de espera antes do tempo limite ao tentar abrir umSqlConnection
. É relevante para oConnection.Open()
comando.enquanto
SqlCommand.CommandTimeout
especificou a duração de um SqlCommand para aguardar antes de atingir o tempo limite. Isso acontece depois que uma conexão é aberta e um dosExecuteXXX
métodos é chamado no objeto Command.fonte
Informação adicional
O valor padrão
CommandTimeout
é 30 segundos. Zero (0) indica que não há limite. Você pode definir oCommandTimeout
valor apenas na codificação.O valor padrão
ConnectiontTimeout
é 15 segundos. Zero (0) indica que não há limite também. Será obtido um valor menor que zero (valor negativo)ArgumentException
. Você pode definir oConnectionTimeout
valor no arquivo de codificação e configuração.fonte
select @@LOCK_TIMEOUT //get the TIMEOUT,default is -1 set LOCK_TIMEOUT = 600//set TIMEOUT with ms
fonte
Nota rápida sobre CommandTimeout, uma vez que é uma propriedade dos objetos Connection e Command ...
A configuração CommandTimeout em um objeto Connection não tem efeito na configuração CommandTimeout em um objeto Command na mesma Connection; ou seja, a propriedade CommandTimeout do objeto Command não herda o valor do valor CommandTimeout do objeto Connection.
Portanto, a configuração CommandTimeout em um objeto Connection afeta apenas os comandos executados no objeto Connection (sem usar um objeto Command).
Por exemplo, quando você está se conectando a um Stored Proc e adicionando parâmetros ao objeto de comando e executando o objeto Command usando uma conexão do objeto Connection, então você precisa definir CommandTimeout no objeto Command e ConnectionTimeout no objeto Connection para substituir ambos padrões. Definir o CommandTimeout no objeto de conexão não substituirá o tempo limite padrão para os comandos do 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
fonte