Sqlcmd:-h和-y 0选项是互斥的吗?

时间:2018-11-23 10:26:26

标签: sql-server batch-file sqlcmd

我们有一个旧的批处理文件(.bat文件),其中包含以下sqlcmd代码:

sqlcmd -S SERVER_NAME -d DB_NAME -I -Q "SELECT COUNT(*) FROM TableName WHERE ColumnName = 'SpecificValue'" -h-1 -k2 -y0

此代码已在Windows Server 2012上运行多年,没有任何问题。现在,我们正在使用Windows Server 2016迁移到新服务器,并且上面的sqlcmd代码不再起作用并返回以下消息:

"Sqlcmd: The -h and the -y 0 options are mutually exclusive."

几个问题:

  • 为什么在Windows Server 2016服务器上会出现这种情况,并且 Windows Server 2012服务器上没有?我找不到任何东西 文档或信息-h和–y0选项是 互斥?
  • 如果现在-h和-y 0选项是互斥的,则 这意味着–y0正式将以相同的方式抑制标头 -h吗?即我们可以删除代码的“ -h-1”部分吗? 期望只用“ -y0”得到相同的结果?

SQL Server版本不同的服务器:

    Windows Server 2012上的
  • SQL Server版本:11.0.7462.6

  • Windows Server 2016上的
  • SQL Server版本:13.0.52.16.0

1 个答案:

答案 0 :(得分:0)

正如我在评论中提到的那样,找出是否仅使用其中一个开关提供相同输出的最简单方法是进行实际测试。我在Windows(Version 14.0.3026.27 NT)和Ubuntu(Version 17.2.0000.1 Linux)上都进行了测试,以完成测试,并得到以下结果:

Windows:

PS Z:\> sqlcmd -S "srvsql2012dev\Sandbox" -E -Q "SELECT 1 AS One;" -h-1 -y0
Sqlcmd: The -h and the -y 0 options are mutually exclusive.
PS Z:\> sqlcmd -S "srvsql2012dev\Sandbox" -E -Q "SELECT 1 AS One;" -h-1
          1

(1 rows affected)
PS Z:\> sqlcmd -S "srvsql2012dev\Sandbox" -E -Q "SELECT 1 AS One;" -y0
1

(1 rows affected)

Ubuntu:

larnu@qebui:~$ sqlcmd -S "localhost" -U larnu -Q "SELECT 1 AS One;" -h-1 -y0
Sqlcmd: The -h and the -y 0 options are mutually exclusive.
larnu@qebui:~$ sqlcmd -S "localhost" -U larnu -Q "SELECT 1 AS One;" -h-1
Password:
          1

(1 rows affected)
larnu@qebui:~$ sqlcmd -S "localhost" -U larnu -Q "SELECT 1 AS One;" -y0
Password:
1

(1 rows affected)

请注意,缩进略有不同。我不知道您的输出以前是什么样子,但是我怀疑其中之一会复制您以前的输出。