共用方式為


sp_releaseapplock (Transact-SQL)

釋放應用程式資源的鎖定。

適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure SQL 資料庫 (初始版本,透過目前版本)。

主題連結圖示 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 角色中的成員資格。

範例

下列範例會釋放 AdventureWorks2012 資料庫中 Form1 資源目前交易的相關聯鎖定。

USE AdventureWorks2012;
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)