最后的时间是LOCK_TIMEOUT
多少?
我在登录后执行一个SET LOCK_TIMEOUT 10
和一个命令并返回 10。SELECT @@LOCK_TIMEOUT
紧接着我又做了SELECT @@LOCK_TIMEOUT
一次,它返回-1。我还以为还是10。
我在 MSDN 网站上做了一些查找,但找不到LOCK_TIMEOUT
是基于会话还是基于语句。
最后的时间是LOCK_TIMEOUT
多少?
我在登录后执行一个SET LOCK_TIMEOUT 10
和一个命令并返回 10。SELECT @@LOCK_TIMEOUT
紧接着我又做了SELECT @@LOCK_TIMEOUT
一次,它返回-1。我还以为还是10。
我在 MSDN 网站上做了一些查找,但找不到LOCK_TIMEOUT
是基于会话还是基于语句。
从
SET LOCK_TIMEOUT
联机丛书条目:我进行的所有测试都反映了这种记录在案的行为。也许您正在使用不同的连接但获得相同的会话 ID?使用此查询检查:
您的应用程序是否通过 提交查询
sp_executesql
?(如果不确定,可以在 Profiler 中检查)退货
为了我。
编辑我也看到了同样的行为
exec sp_prepexec
尽管 SET LOCK_TIMEOUT 文档目前表示它将在连接的其余部分保持有效,但这并不完全正确。它遵循与其他 SET 语句相同的规则。
https://learn.microsoft.com/en-us/sql/t-sql/statements/set-statements-transact-sql
此外,根据您运行查询的方式,您可能正在使用连接池。这可以为您提供相同的@@spid,但
exec sp_reset_connection
在从池中检索连接时会执行。