SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【SQL Server】SQLの実行を一定時間待つ

問題

sleep(10)(10秒待て)みたいな感じでSQLの実行を一定時間待たせたりできないかな。

clock

答え

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;

ロック中は待たされる といった動きを確認できる。

関連するメモ

コメント