sp_releaseapplock (Transact-SQL)
アプリケーション リソースのロックを解放します。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure 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