Я использую RAISERROR для получения вывода о ходе выполнения хранимых процедур, а не использую PRINT, чтобы избежать буферизации вывода PRINT. Теперь я обнаружил, что 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;
@table
, которая невосприимчива к откатам транзакций, чтобы не нуждаться во всевозможных отвратительных обходных путях. - person Aaron Bertrand   schedule 09.09.2014