我有一个简单的循环查询,我想在执行过程中查看PRINT消息。查询如下:
WHILE 1 = 1 BEGIN WAITFOR DELAY '000:00:10' PRINT 'here' END
PRINT 'here'在我停止进程之前不会输出。但是,我想在它运行时看到它。这可能吗?
PRINT 'here'
avkwfej41#
您可以将RAISERROR与服务度0和NOWAIT选项一起使用
WHILE 1 = 1 BEGIN WAITFOR DELAY '000:00:10' RAISERROR ('here', 0, 1) WITH NOWAIT END
ryoqjall2#
我相信打印得到缓冲,释放“块”作为缓冲区填补。尝试使用raiserror:How do I flush the PRINT buffer in TSQL?
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
olhwl3o24#
目前的建议不适用于SSMS 18及以上版本。Print then raiserror(N'',0,1)似乎可以解决这个问题。
4条答案
按热度按时间avkwfej41#
您可以将RAISERROR与服务度0和NOWAIT选项一起使用
ryoqjall2#
我相信打印得到缓冲,释放“块”作为缓冲区填补。
尝试使用raiserror:
How do I flush the PRINT buffer in TSQL?
uurity8g3#
试试这个
olhwl3o24#
目前的建议不适用于SSMS 18及以上版本。Print then raiserror(N'',0,1)似乎可以解决这个问题。