2009-08-17 10 views
18

私はループし、実行中にPRINTメッセージを見たい簡単なクエリがあります。しかし、私は、その実行中に、それを見たいと思って、私は、プロセスを停止するまでT-SQL出力メッセージSSMSでの実行中

WHILE 1 = 1 
BEGIN 
    WAITFOR DELAY '000:00:10' 
    PRINT 'here' 
END 

「ここに」PRINT出力はしません:クエリは、このようなものです。これは可能ですか?

答えて

13

私はプリントがバッファーに入れられ、バッファーがいっぱいになると "チャンク"を放出すると信じています。

RAISERRORを使用してみてください:

How do I flush the PRINT buffer in TSQL?

17

あなたはserverity 0でRAISERRORを使用することができますし、NOWAITオプション

WHILE 1 = 1 
BEGIN 
    WAITFOR DELAY '000:00:10' 
    RAISERROR ('here', 0, 1) WITH NOWAIT 
END 
+1

注意してみてください最初の500件のメッセージの後に働きます。一度それ以上印刷すると、突然バッファリングが始まります! – GendoIkari

1

が、これは「doesnのことを、この..

DECLARE @i INT = 1 

WHILE (@i <= 10) 

BEGIN 

--- do something 

SELECT 'Completed ' + CAST(@i AS VARCHAR(50)) + ' : ' + CAST(GETDATE() AS VARCHAR(50)); 

SET @i = @i + 1 

END 
+0

これは私のために働く – ambrul

+0

マークダウン規則に従ってコードをフォーマットできますか? –