SET LOCK_TIMEOUT (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
ロックが解除されるまでのステートメントの待ち時間をミリ秒単位で指定します。
構文
SET LOCK_TIMEOUT timeout_period
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
timeout_period
Microsoft SQL Server がロック エラーを返すまでの経過時間をミリ秒単位で指定します。 値が -1 (既定値) の場合は、タイムアウトはなく、無期限に待機します。
ロックの待ち時間がタイムアウト値を超えると、エラーが返されます。 値が 0 の場合は、待ち時間はなく、ロックがかかるとすぐにメッセージが返されます。
注釈
この設定では、接続の開始時に -1 が割り当てられます。 この値が変更されると、その接続の残りの期間については、新しい設定が適用されます。
SET LOCK_TIMEOUT は、解析時ではなく実行時に設定されます。
SET オプションの代わりに READPAST ロック ヒントを使用できます。
CREATE DATABASE、ALTER DATABASE、および DROP DATABASE ステートメントでは、SET LOCK_TIMEOUT の設定は無視されます。
アクセス許可
ロール public のメンバーシップが必要です。
例
A: ロック タイムアウトを 1,800 ミリ秒に設定する
次の例では、ロック タイムアウトの待ち時間を 1800
ミリ秒に設定します。
SET LOCK_TIMEOUT 1800;
GO
例: Azure Synapse Analytics、Analytics Platform System (PDW)
B. ロックが解放されるまで無限に待機するようにロック タイムアウトを設定する。
次の例では、ロック タイムアウトを無期限に待機して期限切れにならないように設定します。 これは、各接続の開始時に既に設定されている既定の動作です。
SET LOCK_TIMEOUT -1;
次の例では、ロック タイムアウトの待ち時間を 1800
ミリ秒に設定します。 このリリースの Azure Synapse Analytics では、ステートメントが正常に解析されますが、1800 という値は無視して既定の動作を使い続けます。
SET LOCK_TIMEOUT 1800;