Ответ 1
Если вы используете RAISERROR
с серьезностью 10 или меньше и используйте параметр NOWAIT
, он отправит информационное сообщение клиенту:
RAISERROR ('Deleting old data Part 1/3' , 0, 1) WITH NOWAIT
Рассмотрим следующую хранимую процедуру.
CREATE PROCEDURE SlowCleanUp (@MaxDate DATETIME)
AS
BEGIN
PRINT 'Deleting old data Part 1/3...'
DELETE FROM HugeTable1 where SaveDate < @MaxDate
PRINT 'Deleting old data Part 2/3...'
DELETE FROM HugeTable2 where SaveDate < @MaxDate
PRINT 'Deleting old data Part 3/3...'
DELETE FROM HugeTable3 where SaveDate < @MaxDate
PRINT 'Deleting old data COMPLETED.'
END
Скажем, что для каждой инструкции удаления требуется много времени, но мне нравится наблюдать за ходом этой хранимой процедуры, когда я запускаю ее в SQL Management Studio. Другими словами, мне нравится видеть выходные данные операторов PRINT, чтобы увидеть, где я в любой момент. Однако кажется, что я могу видеть только выходные данные PRINT в конце ПРОГРАММЫ ENTIRE. Есть ли способ сделать это так, чтобы я мог видеть выходы PRINT в реальном времени? Если нет, есть ли другой способ увидеть ход выполнения хранимой процедуры?
Если вы используете RAISERROR
с серьезностью 10 или меньше и используйте параметр NOWAIT
, он отправит информационное сообщение клиенту:
RAISERROR ('Deleting old data Part 1/3' , 0, 1) WITH NOWAIT
Да, вы должны иметь возможность немедленно отправить сообщение, если вы используете RAISERROR:
RAISERROR('Hello',10,1) WITH NOWAIT