sp_releaseapplock (Transact-SQL)
適用於:SQL ServerAzure SQL DatabaseAzure 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固定資料庫角色的成員,才能成功呼叫函式。 預設值是公用。
傳回碼值
>= 0(成功),或 < 0 (失敗)
值 | 結果 |
---|---|
0 | 已成功釋放鎖定。 |
-999 | 表示參數驗證或其他呼叫錯誤。 |
備註
當應用程式呼叫相同鎖定資源的多次sp_getapplock時,sp_releaseapplock必須呼叫相同次數才能釋放鎖定。
當伺服器因任何原因關閉時,會釋放鎖定。
權限
需要 public 角色中的成員資格。
範例
下列範例會釋放與資料庫中資源Form1
AdventureWorks2022
上目前交易相關聯的鎖定。
USE AdventureWorks2022;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1',
@LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';
GO
另請參閱
APPLOCK_MODE (Transact-SQL)
APPLOCK_TEST (Transact-SQL)
sp_getapplock (Transact-SQL)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應