运行在管理工作室中正常运行的脚本时出现SQLCMD语法错误

Tro*_*roy 3 sql-server sqlcmd sql-server-2008

当我select '$(''test'')'在SQL Management Studio 2008中运行它时,它返回$('test')

当我sqlcmd -S SERVER -E -d DATABASE -q "select $(''test'')"在命令行上运行它返回Sqlcmd: Error: Syntax error at line 1 near command '''.

如果我删除美元符号就行了."$"是一个特殊角色吗?

这是一个sqlcmd错误吗?如何更改脚本以获得所需的结果.

Rem*_*anu 14

是的,$(id)在SQLCMD中有特殊的语义:它是一个变量替换.您可以运行以下命令:

sqlcmd /E /S . /v variable=MyTable /Q "select * from $(variable)"
Run Code Online (Sandbox Code Playgroud)

这将从MyTable中选择.正如您所猜测的那样,/v是定义变量的开关.另一方面,SSMS默认情况下不会将SQL解释为变量替换.SSMS 可以作出这样做,通过检查"在SQLCMD模式下打开查询寡妇"的选项.

有关模式详细信息,请参阅使用sqlcmd和脚本变量.

  • 谢谢,这就是我需要知道的.-x开关禁用变量,因此这有效:sqlcmd -S SERVER -E -d DATABASE -x -q"select $(''test'')" (7认同)