sp_releaseapplock (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
为应用程序资源释放锁。
语法
sp_releaseapplock
[ [ @Resource = ] N'Resource' ]
[ , [ @LockOwner = ] 'LockOwner' ]
[ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]
参数
[ @Resource = ] N'资源'
由客户端应用程序指定的锁资源名称。 @Resource为 nvarchar(255),默认值为 NULL
. @Resource是二进制比较的,因此无论当前数据库的排序规则设置如何,都区分大小写。
应用程序必须确保该资源是唯一的。 指定名称在内部哈希为可存储在 SQL Server 锁管理器中的值。
[ @LockOwner = ] 'LockOwner'
锁的所有者,这是 请求锁时@LockOwner 值。 @LockOwner为 varchar(32),默认值为 Transaction
. 该值也可以是 Session
。 当@LockOwner值为 Transaction 时,默认情况下或显式指定时,sp_getapplock
必须从事务内执行。
[ @DbPrincipal = ] N'DbPrincipal'
有权访问数据库中对象的用户、角色或应用程序角色。 @DbPrincipal为 sysname,默认值为 public
. 该函数的调用方必须是 database_principal、dbo 或 db_owner 固定数据库角色的成员,才可成功调用该函数。
返回代码值
>= 0
(成功),或 < 0
(失败)。
值 | 结果 |
---|---|
0 |
成功释放锁。 |
-999 |
指示参数验证或其他调用错误。 |
注解
当应用程序多次调用 sp_getapplock
同一锁资源时, sp_releaseapplock
必须调用相同次数才能释放锁。
服务器因任何原因而关闭时都将释放锁。
权限
要求 公共 角色具有成员身份。
示例
下面的示例将释放与 Form1
数据库中资源 AdventureWorks2022
的当前事务关联的锁。
USE AdventureWorks2022;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo',
@Resource = 'Form1',
@LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo',
@Resource = 'Form1';
GO