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

前端之家收集整理的这篇文章主要介绍了sql-server – 如何在SQL Server中取消应用程序锁定请求?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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以确认这一点:-)

原文链接:https://www.f2er.com/mssql/79998.html

猜你在找的MsSQL相关文章