適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric 中的 SQL 資料庫
釋放應用程式資源的鎖定。
語法
sp_releaseapplock
[ [ @Resource = ] N'Resource' ]
[ , [ @LockOwner = ] 'LockOwner' ]
[ , [ @DbPrincipal = ] N'DbPrincipal' ]
[ ; ]
引數
[ @Resource = ] N'資源'
用戶端應用程式指定的鎖定資源名稱。
@Resource為 nvarchar(255),預設值為 NULL。
@Resource是二進位比較,因此不論目前資料庫的定序設定為何,都會區分大小寫。
應用程式必須確保資源是唯一的。 指定的名稱會在內部哈希為可儲存在 SQL Server 鎖定管理員中的值。
[ @LockOwner = ] 「鎖主」
鎖定的擁有者,這是 要求鎖定時@LockOwner 值。
@LockOwner為 varchar(32),預設值為 Transaction。 值也可以是 Session。
當@LockOwner值為 Transaction 時,預設或明確指定時,sp_getapplock必須從交易內執行。
[ @DbPrincipal = ] N'Db校長'
具有資料庫中物件許可權的使用者、角色或應用程式角色。 @DbPrincipal為 sysname。 函式的呼叫端必須是database_principal、dbo 或db_owner固定資料庫角色的成員,才能成功呼叫函式。
傳回碼值
>= 0 (成功),或 < 0 (失敗)。
| 值 | 結果 |
|---|---|
0 |
已成功釋放鎖定。 |
-999 |
表示參數驗證或其他呼叫錯誤。 |
備註
當應用程式 sp_getapplock 呼叫相同鎖定資源的多次時, sp_releaseapplock 必須呼叫相同次數才能釋放鎖定。
當伺服器因任何原因關閉時,會釋放鎖定。
權限
需要 public 角色的成員資格。
範例
下列範例會釋放與資料庫中資源Form1AdventureWorks2025上目前交易相關聯的鎖定。
USE AdventureWorks2022;
GO
EXECUTE sp_getapplock
@DbPrincipal = 'dbo',
@Resource = 'Form1',
@LockMode = 'Shared';
EXECUTE sp_releaseapplock
@DbPrincipal = 'dbo',
@Resource = 'Form1';
GO