我正在使用sqlcmd在我的sql-server数据库中运行一些插入和更新语句。当第一条语句返回0行时,屏幕上的输出仅显示受影响的0行,即使它们在数据库中成功执行,也不会显示连续消息的输出。
当第一条语句影响一个或多个行时,将显示所有消息。即使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将所有结果消息打印到屏幕上。
对此有何建议?
答案 0 :(得分:0)
我只是遇到了同样的问题。原来是由于使用旧版本的sqlcmd。要查看您正在运行的版本,请使用:
sqlcmd -?
我不确定哪个版本可以解决此问题,但是10.50.2500.0版本有您描述的问题,而15.0.1300.359版本没有。