T-SQL输出消息在SSMS中执行期间

Chr*_*eis 28 sql sql-server

我有一个简单的查询循环,我想在执行过程中看到PRINT消息.查询是这样的:

WHILE 1 = 1
BEGIN
    WAITFOR DELAY '000:00:10'
    PRINT 'here'
END
Run Code Online (Sandbox Code Playgroud)

PRINT'here'在我停止进程之前不会输出,但是,我想在运行时看到它.这可能吗?

小智 22

您可以将RAISERROR与服务器0和NOWAIT选项一起使用

WHILE 1 = 1
BEGIN
    WAITFOR DELAY '000:00:10'
    RAISERROR ('here', 0, 1) WITH NOWAIT
END
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这在前500条消息之后不起作用; 一旦你打印超过它突然开始缓冲! (2认同)
  • 在 SSMSv 18.1 中对我不起作用。也许自2015年起事情就发生了变化...... (2认同)

KM.*_*KM. 18

我相信打印得到缓冲,当缓冲区填满时释放"块".

尝试使用raiserror:

如何在TSQL中刷新PRINT缓冲区?