首页 > 解决方案 > SQLCMD 在第一个结果返回 0 行后不打印结果消息

问题描述

我正在使用 sqlcmd 将一些插入和更新语句运行到我的 sql-server 数据库中。当第一条语句返回 0 行时,屏幕上的输出仅显示 0 行受影响,并且即使它们在 DB 中成功,也不会显示连续消息的输出。

当第一个语句影响一个或多个行时,将显示所有消息。即使 0 行受影响的语句在脚本的稍后阶段发生。还尝试在每个语句的末尾使用分号。尝试使用 SET NOCOUNT ON。都是一样的效果。sqlcmd 的命令行参数似乎都不起作用

找到这篇文章:https ://social.msdn.microsoft.com/Forums/sqlserver/en-US/d6c5e90c-0c74-4ab4-b883-7a5ac93c6220/messages-from-sqlcmd?forum= transactsql 看起来不像是他们修复的东西。我在 Linux 的 17.3.0000.1 版本上运行。还尝试过没有运气的旧版本。

sqlcmd -S myserver,INST01 -i test.sql -d MyDB

这里是我的 sql 脚本的内容:

UPDATE [MissionsDB].[dbo].[People_test] SET Name = 'TEST' WHERE 1=0;
INSERT INTO [dbo].[People_test] (Name) VALUES ('Peter2')
INSERT INTO [dbo].[People_test] (Name) VALUES ('Peter3')
UPDATE [dbo].[People_test] SET Name = 'Peter5' WHERE Name in ('Peter3','Peter1')

这是输出:

(0 rows affected)

之后什么都没有显示。

当我将要执行的第一个插入语句不在第一个位置时,sqlcmd 会将所有结果消息打印到屏幕上。

对此有何建议?

标签: sql-serversqlcmd

解决方案


我刚刚遇到了同样的问题。事实证明这是由于使用了旧版本的 sqlcmd。要查看您正在运行的版本,请使用:

sqlcmd -?

我不确定哪个版本解决了这个问题,但版本 10.50.2500.0 有你描述的问题,而版本 15.0.1300.359 没有。


推荐阅读