sp_releaseapplock (Transact-SQL)
適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance
アプリケーション リソースのロックを解放します。
構文
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 (失敗)
Value | 結果 |
---|---|
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 の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示