PRINTによる出力のバッファリングを避けるために、PRINTを使用するのではなく、RAISERRORを使用してストアドプロシージャから進行状況の出力を生成しています。RAISERROR が 500 印刷後にバッファリングを開始することを発見しました。この動作を回避する方法はありますか? 以下のクエリは、私の要点を示しています。
DECLARE @i INT = 0
WHILE @i < 50000
BEGIN
SET @i = @i + 1
RAISERROR('%i prints', 0,1 , @i) with nowait;
IF @i > 500 --<--after 500 prints RAISERROR starts buffering 50 prints before flushing.
WAITFOR DELAY '00:00:00.050';
END;