sp_releaseapplock (Transact-SQL)
釋放應用程式資源的鎖定。
語法
sp_releaseapplock [ @Resource = ] 'resource_name'
[ , [ @LockOwner = ] 'lock_owner' ]
[ , [ @DbPrincipal = ] 'database_principal' ]
[ ; ]
引數
[@Resource = ] 'resource_name'
這是用戶端應用程式所指定的鎖定資源名稱。應用程式必須確定資源是唯一的。指定的名稱會在內部雜湊成 SQL Server 鎖定管理員所能儲存的值。resource_name 是 nvarchar(255),沒有預設值。resource_name 是以二進位來比較,不論目前資料庫的定序設定為何,都會區分大小寫。[@LockOwner = ] 'lock_owner'
這是鎖定的擁有者,也就是要求鎖定時的 lock_owner 值。lock_owner 是 nvarchar(32)。這個值可以是 Transaction (預設值) 或 Session。當 lock_owner 值是 Transaction 時,依預設或明確地指定,必須從交易內執行 sp_getapplock。[@DbPrincipal = ] 'database_principal'
這是有資料庫中的物件權限之使用者、角色或應用程式。函數的呼叫者必須是 database_principal、dbo 或 db_owner 固定資料庫角色的成員,才能夠成功呼叫函數。預設值是 public。
傳回碼值
>= 0 (成功) 或 < 0 (失敗)
值 |
結果 |
---|---|
0 |
鎖定釋放成功。 |
-999 |
表示參數驗證或其他呼叫錯誤。 |
備註
當應用程式針對相同鎖定資源來重複呼叫 sp_getapplock 時,也必須呼叫 sp_releaseapplock 相同次數,以便釋出鎖定。
當因故關閉伺服器時,會釋放鎖定。
權限
需要 public 角色中的成員資格。
範例
下列範例會釋放 AdventureWorks 資料庫中 Form1 資源之目前交易的相關聯鎖定。
USE AdventureWorks;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1',
@LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';
GO