2008-12-08 111 views
42

在SQL Server 2005 Management Studio中,看起来PRINT语句的输出不会立即显示:如果我有一个PRINT语句后跟一个长时间运行的语句,则PRINT直到下列语句后输出才会出现。SQL Server:PRINT输出不会立即出现

有什么办法可以提前刷新输出吗?我正在运行一些需要完成一个年龄的升级脚本,我想知道脚本有多远(所以我知道是等几分钟,然后开始下一个脚本,还是去吃午饭)。

+0

你有一个“GO”打印和长时间运行的语句之间? – 2008-12-08 12:26:33

+2

可能重复[如何在TSQL中刷新PRINT缓冲区?](http://stackoverflow.com/questions/306945/how-do-i-flush-the-print-buffer-in-tsql) – usr 2014-04-29 15:53:14

+0

Roger:我在http://blog.differentpla.net/blog/2006/10/19/bad-ui-why-sql-query-analyzer-sucks上看到了你的咆哮。我有同样的投诉。为什么我需要看到我的登录信息和在这个短空间里挤出所有其他重要信息的单词“SQLQuery999.sql”,对吧?!很高兴看到你说出来,尽管它不会改变一件事情。我必须诉诸使用由服务器资源管理器提供的Visual Studio界面,以免发生致命的事故。 – 2018-01-11 17:04:16

回答

70

否。只有在提交事务,返回其他记录集或完成语句时才会返回它们(SQL批处理中的语句终止符为go)。您可以在非致命错误级别(0-18)处使用raiserror以获得此类反馈。例如:

RAISERROR ('Foo', 10, 1) WITH NOWAIT 
-3

对我来说,它只是在打印命令(例如,

print 'test' 
print 'test' 
go 

一般情况下,我的结论是以下几点:MSSQL脚本执行的输出,在短信界面或sqlcmd.exe执行,将刷新到文件,stdoutput,GUI窗口上第一GO语句或直到的结束脚本。

存储过程内部的刷新功能不同,因为你不能放置GO。

参考:tsql Go statement