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

j2qf4p5b  于 2022-12-03  发布在  其他
关注(0)|答案(4)|浏览(171)

我有一个简单的循环查询,我想在执行过程中查看PRINT消息。查询如下:

WHILE 1 = 1
BEGIN
    WAITFOR DELAY '000:00:10'
    PRINT 'here'
END

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

avkwfej4

avkwfej41#

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

WHILE 1 = 1
BEGIN
    WAITFOR DELAY '000:00:10'
    RAISERROR ('here', 0, 1) WITH NOWAIT
END
ryoqjall

ryoqjall2#

我相信打印得到缓冲,释放“块”作为缓冲区填补。
尝试使用raiserror:
How do I flush the PRINT buffer in TSQL?

uurity8g

uurity8g3#

试试这个

DECLARE @i INT = 1
WHILE ( @i <= 10)
BEGIN
    --- do something
    SELECT 'Completed  ' + CAST(@i AS VARCHAR(50)) + '  :  ' + CAST(GETDATE() AS VARCHAR(50));
    SET @i = @i + 1
END
olhwl3o2

olhwl3o24#

目前的建议不适用于SSMS 18及以上版本。Print then raiserror(N'',0,1)似乎可以解决这个问题。

相关问题