如何配置sqlcmd仅返回‘N rows affected’消息而非结果集?
让sqlcmd仅返回「N rows affected」消息的实现方法
当然可以做到!根据你的使用场景,我整理了两种实用方案:
方案一:用命令行参数+输出重定向(适合脚本/批量执行)
sqlcmd默认会把查询结果集输出到标准输出(stdout),而「N rows affected」这类操作反馈消息,我们可以通过参数把它转移到标准错误输出(stderr),然后丢弃标准输出的内容,就能只保留想要的消息了。
举个实际的执行例子:
sqlcmd -S 你的服务器名 -d 目标数据库 -U 用户名 -P 密码 -Q "UPDATE 你的表 SET 字段名 = '新值' WHERE 条件" -r 1 > nul
参数说明:
-r 1:强制把所有信息性消息(包括rows affected)发送到stderr> nul:将stdout(也就是结果集)重定向到空设备,直接丢弃结果集内容
执行这条命令后,你只会看到「N rows affected」的反馈。
方案二:调整SQL执行语句(适合能修改语句的场景)
如果你的操作语句本身附带了返回结果集的逻辑(比如带OUTPUT子句的插入/更新,或者额外加了SELECT查询),那直接去掉返回结果集的部分就好——只要确保SET NOCOUNT OFF(这是sqlcmd的默认设置,会自动显示rows affected消息)。
比如原本的语句是:
UPDATE 你的表 SET 字段名 = '新值' WHERE 条件; SELECT * FROM 你的表 WHERE 条件; -- 这行返回了多余的结果集
改成只保留操作语句:
UPDATE 你的表 SET 字段名 = '新值' WHERE 条件;
执行后就只会输出「N rows affected」了。
内容的提问来源于stack exchange,提问作者CN Trường
相关产品推荐
相关产品推荐

