Share via


sp_releaseapplock (Transact-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 ロールのメンバーシップが必要です。

次の例では、AdventureWorks2008R2 データベース内のリソース Form1 において、現在のトランザクションに関連付けられているロックを解放します。

USE AdventureWorks2008R2;
GO
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1', 
     @LockMode = 'Shared';
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';
GO