加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何在SQL Server中取消应用程序锁定请求?

发布时间:2020-12-12 05:55:01 所属栏目:MsSql教程 来源:网络整理
导读:sp_getapplock存储过程具有以下返回值: 0: The lock was successfully granted synchronously. 1: The lock was granted successfully after waiting for other incompatible locks to be released. -1: The lock request timed out. -2: The lock request w
sp_getapplock存储过程具有以下返回值:

0: The lock was successfully granted synchronously.
1: The lock was granted successfully after waiting for other incompatible locks to be released.
-1: The lock request timed out.
-2: The lock request was canceled.
-3: The lock request was chosen as a deadlock victim.
-999: Indicates a parameter validation or other call error.

我正在编写一个在我们的数据访问层中调用sp_getapplock的包装器,我想知道在哪些情况下可以返回-2,这样我就可以抛出一个描述性和有用的异常.很明显-1和-3的返回值是什么意思,我可以很容易地创建导致返回这些值的测试条件.我如何设法获得-2的返回值?

解决方法

查看sp_getapplock包装器proc的源代码,除-999之外的所有返回值都来自底层sys.xp_userlock内部存储过程.我敢打赌,当请求被注意事件(客户端查询超时或显示客户端查询取消)取消时,内部proc返回-2.但是,取消批处理后不再执行sp_getapplock代码,包括RETURN语句.因此,-2返回代码可以在内部返回,但客户端没有实际的方法来获取值.

假设这个理论是正确的,那么将-2转换为更具描述性的消息没有任何价值,因为客户端首先取消了请求.

我将通过调试器逐步执行SQL数据库引擎代码来保留给Paul以确认这一点:-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读