Windows 10 在批处理文件中隐藏 RAISERROR WITH NOWAIT 消息

Windows 10 hides RAISERROR WITH NOWAIT messages in batch file

在 Windows 10 中,似乎从 sqlcmd 调用的所有 RAISERROR WITH NOWAIT 消息现在都隐藏在命令提示符中,直到批处理完成:

> sqlcmd -Q "raiserror('Test message', 10, 1) with nowait; waitfor delay '00:00:05'" -b -r1

(no output to console until waitfor is finished)

将此与 Windows 2008 R2 中的相同命令 运行 进行比较:

> sqlcmd -Q "raiserror('Test message', 10, 1) with nowait; waitfor delay '00:00:05'" -b -r1
Test message

(immediate output)

在上面的示例中,即使批处理尚未完成,您也可以看到消息。

Windows10 中是否有配置设置可以恢复此功能?我有依赖 WITH NOWAIT 来显示进度的遗留批处理文件。

这是因为 sqlcmd11(不确定是否更高)does not honor RAISERROR WITH NOWAIT。它似乎与底层 OS.

没有任何关系

这是一个 link 到 Whosebug post 的一些可能的解决方法。