【SQL Server】SQLの実行を一定時間待つ
問題
sleep(10)(10秒待て)みたいな感じでSQLの実行を一定時間待たせたりできないかな。
答え
WAITFORが使える。
指定された時間または期間に達するか、指定されたステートメントによって少なくとも 1 つの行が変更または返されるまで、バッチ、ストアド プロシージャ、またはトランザクションの実行をブロックします。
単純に指定秒数待たせる以外にも使えそう。
とりあえずちょっと待たせることができるので、ロック時のプログラムの動作テストなどに使える。
接続その1で以下のようなSQLを実行し、
SET LOCK_TIMEOUT 0; begin tran; select * from A with (TABLOCKX); WAITFOR DELAY '00:01'; /* 1分待て */ rollback;
接続その2でロック中のテーブルをselectしようとすると、
select * from A;
ロック中は待たされる といった動きを確認できる。
コメント