SQL Server Management Studio のメッセージ領域にリアルタイムに処理状況を表示させてみる
先ほど羽田空港に到着しました。空港でブログ書いてますー。
今週の後半は、新潟からの、東京に戻って、那覇という強行スケジュール。
仕事なので、特に楽しいことはありません.....そりゃ、深夜からビールくらいは飲みましたよ、オリオンビールね。
SQL を実行し、その途中経過を知るために一連の処理の中で PRINT を使用して、様々な情報を出力することも多いかと思います。SQL Server Management Studio などで、一連の処理の中に PRINT を埋め込み情報を出力させても、すべての処理が完了するまで、PRINT に指定した文字列は SQL Server のメッセージ領域に表示されません。(下図の赤枠の部分です。)
これでは、処理の進捗状況がイマイチわからないので、処理が長時間かかるものなどは処理されているのかどうか心配になってしまいます。このような要件を満たすには、RAISERROR を使用します。下記のサンプルを SQL Server Management Studio で実行させてみましょう。下記のサンプルでは、メッセージ領域にきちんと反映されているか確認しやすいように、WAITFOR を使用して、メッセージを出力する前に 5秒間待機させています。
DECLARE @cnt INT DECLARE @msg NVARCHAR(50) SET @cnt = 0 WHILE( @cnt < 10 ) BEGIN SET @cnt = @cnt + 1 WAITFOR DELAY '00:00:05' SET @msg = 'メッセージ' RAISERROR (@msg, 0, 1) WITH NOWAIT END
これで、SQL の処理がどこまで進んでいるか等、リアルタイムに把握することが可能になりますね。
※そういえば、SQL Server 2016 CTP2.3 がリリースされましたね。早速検証せねば!!
Download Microsoft® SQL Server® 2016 Community Technology Preview 2.3 (CTP2.3) from Official Microsoft Download Center
※ Windows Server では、書籍が Technical Preview 版でまもなく出版されるようですが、SQL Server ではそんなことないんですかね?ないですよね....
Windows Server 2016テクノロジ入門 Technical Previewエディション
- 作者: 山内和朗
- 出版社/メーカー: 日経BP社
- 発売日: 2015/09/10
- メディア: 単行本
- この商品を含むブログを見る