Por que período dura o LOCK_TIMEOUT
último?
Eu faço a SET LOCK_TIMEOUT 10
e a SELECT @@LOCK_TIMEOUT
em um comando após um login e recebo 10 retornados. Imediatamente depois disso, faço SELECT @@LOCK_TIMEOUT
novamente e ele retorna -1. Eu teria pensado que ainda seria 10.
Eu fiz algumas pesquisas no site do MSDN e não consegui descobrir se LOCK_TIMEOUT
é baseado em sessão ou em instrução.
Da
SET LOCK_TIMEOUT
entrada do Books Online:Todos os testes que realizei refletiram esse comportamento documentado. Talvez você esteja usando conexões diferentes, mas obtendo o mesmo id de sessão? Use esta consulta para verificar:
Seu aplicativo envia suas consultas via
sp_executesql
? (Você pode verificar isso no Profiler se não tiver certeza)devoluções
para mim.
Editar E também vejo o mesmo tipo de comportamento com
exec sp_prepexec
Embora a documentação do SET LOCK_TIMEOUT atualmente diga que permanecerá em vigor pelo restante da conexão, isso não está totalmente correto. Segue as mesmas regras que outras instruções SET.
https://learn.microsoft.com/en-us/sql/t-sql/statements/set-statements-transact-sql
Além disso, dependendo de como você está executando a consulta, você pode estar usando o pool de conexões. Isso pode fornecer o mesmo @@spid, mas faz um
exec sp_reset_connection
quando recupera uma conexão do pool.