sql-server - 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 会将所有结果消息打印到屏幕上。
对此有何建议?
解决方案
我刚刚遇到了同样的问题。事实证明这是由于使用了旧版本的 sqlcmd。要查看您正在运行的版本,请使用:
sqlcmd -?
我不确定哪个版本解决了这个问题,但版本 10.50.2500.0 有你描述的问题,而版本 15.0.1300.359 没有。
推荐阅读
- python - 如何找到两个地理数据框之间的距离
- r - 如何更改ggplot2中的图例?
- xml - 用于每年重置序列的 Odoo XML 似乎无法正常工作
- python - 无法使用范围在 for 循环中正确遍历
- tcl - 在 tcl 中运行 Mql 查询时报告错误
- spring - @Transactional 在使用 try catch 块时不起作用
- c# - 使用 WebVIew2 (Windows) 在当前目录中加载本地 HTML 文件
- python - 在 Pygame 中定义基类/模型
- wordpress - 如何在 WooCommerce 中每 5 秒刷新一次购物车和结帐?
- c# - 文本文件输入异常处理 C#