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 です。
解説
アプリケーションが同じロック リソースに対して sp_getapplock を複数回にわたって呼び出す場合は、同じ回数だけ sp_releaseapplock を呼び出して、ロックを解放する必要があります。
何らかの理由でサーバーがシャットダウンすると、ロックは解放されます。
権限
ロール public のメンバシップが必要です。
戻り値
成功した場合は 0 以上の値を、失敗した場合は 0 以下の値をそれぞれ返します。
値 | 結果 |
---|---|
0 |
ロックの解放が正しく行われました。 |
-999 |
パラメータの検証エラーまたはその他の呼び出しエラーです。 |
例
次の例では、AdventureWorks
データベース内のリソース Form1
において、現在のトランザクションに関連付けられているロックを解放します。
USE AdventureWorks;
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)