如何查看运行SQL存储过程的进度?

SF *_*Lee 19 sql t-sql ssms

考虑以下存储过程..

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
Run Code Online (Sandbox Code Playgroud)

假设每个delete语句需要很长时间才能删除,但是我喜欢在SQL Management Studio中运行它时看到这个存储过程的进度.换句话说,我喜欢看PRINT语句的输出,看看我在任何给定时间的位置.但是,我似乎只能在ENTIRE运行结束时看到PRINT输出.有没有办法让它能够实时看到PRINT输出?如果没有,还有其他方法可以看到正在运行的存储过程的进度吗?

Mic*_*son 32

如果您使用RAISERROR严重性为10或更低,并使用该NOWAIT选项,它将立即向客户端发送信息性消息:

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


Bri*_*dge 6

是的,如果您使用RAISERROR,您应该能够立即打印消息:

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