Как увидеть ход выполнения хранимых процедур SQL?

Рассмотрим следующую хранимую процедуру.

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 в реальном времени? Если нет, есть ли другой способ увидеть ход выполнения хранимой процедуры?

Ответ 1

Если вы используете RAISERROR с серьезностью 10 или меньше и используйте параметр NOWAIT, он отправит информационное сообщение клиенту:

RAISERROR ('Deleting old data Part 1/3' , 0, 1) WITH NOWAIT

Ответ 2

Да, вы должны иметь возможность немедленно отправить сообщение, если вы используете RAISERROR:

RAISERROR('Hello',10,1) WITH NOWAIT