WAITFOR の使用
WAITFOR ステートメントを使用すると、次の条件が満たされるまで、バッチ、ストアド プロシージャ、またはトランザクションを中断できます。
- 指定された時間が経過する。
- 指定された時刻になる。
- 指定した RECEIVE ステートメントにより、少なくとも 1 行が変更されるか Service Broker キューに返される。
実際の遅延時間は、指定した時間と異なる場合があり、サーバーの利用状況のレベルに依存します。WAITFOR ステートメントと関連付けられたスレッドがスケジュールされると、時間カウンタが開始します。サーバーがビジー状態の場合、スレッドが直ちにスケジュールされないことがあります。したがって、遅延時間は指定した時間より長くなる可能性があります。
WAITFOR ステートメントは次のいずれかの句を使用して指定します。
DELAY キーワードと、その後に WAITFOR ステートメントを完了するまでの時間を指定する time_to_pass。WAITFOR ステートメントを完了するまでの時間は最大 24 時間です。
次の例では、DELAY
キーワードを使用して、2 秒待機してからSELECT
ステートメントを実行しています。WAITFOR DELAY '00:00:02' SELECT EmployeeID FROM AdventureWorks.HumanResources.Employee;
TIME キーワードと、その後に WAITFOR ステートメントの完了時刻を指定する time_to_execute。
次の例では、TIME
キーワードを使用して、AdventureWorks
データベースのすべてのページが、正しく割り当てられて使用されているかどうかのチェックを、午後 10 時 (22:00
) に実行するように指定しています。USE AdventureWorks; GO BEGIN WAITFOR TIME '22:00'; DBCC CHECKALLOC; END; GO
1 つ以上のメッセージを Service Broker キューから取得する RECEIVE ステートメント句。RECEIVE ステートメントと共に WAITFOR を指定すると、現在の Service Broker キューにメッセージが存在しない場合に、メッセージがキューに到着するまでステートメントが待機されます。
キューにメッセージが到達するまでの Service Broker の待機時間 (ミリ秒単位) を指定する timeout が続く TIMEOUT キーワード。TIMEOUT は、RECEIVE ステートメント内または GET CONVERSATION GROUP ステートメント内で指定できます。
リリース | 履歴 |
---|---|
2005 年 12 月 5 日 |
|
参照
その他の技術情報
RECEIVE (Transact-SQL)
WAITFOR (Transact-SQL)
GET CONVERSATION GROUP (Transact-SQL)