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

标签 sql tsql 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

假设每个删除语句都需要很长时间才能删除,但我希望在 SQL Management Studio 中运行该存储过程时看到它的进度。换句话说,我喜欢查看 PRINT 语句的输出,以了解我在任何给定时间的位置。但是,似乎我只能在整个运行结束时看到打印输出。有没有办法让我可以实时看到打印输出?如果没有,是否有其他方法可以查看正在运行的存储过程的进度?

最佳答案

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

RAISERROR('删除旧数据第 1/3 部分', 0, 1)WITH NOWAIT

关于sql - 如何查看SQL存储过程的运行进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10132847/

相关文章:

sql - 用于SQL Server Management Studio 2005的SVN客户端

sql - 如何在一个 ssms 实例中打开多个 .sql 文件

c# - : Windows Authentication, 护照认证和表单认证有什么区别?

SQL 性能,使用 OPTION (FAST n)

sql-server - 在计算列中使用 master.sys.fn_varbintohexsubstring

sql - 更改表以使 MEMORY_OPTIMIZED=ON 错误 SQL Server 2017

tsql - 在 T-SQL 中将 CSV 字符串转换为表的最简洁方法?

mysql if 语法错误

mysql - 如何修复 ERROR 1064 (42000) 语法错误?

sql - 周末日期返回问题