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

时间:2010-03-17 18:31:20

标签: sql-server sql-server-2008 sqlcmd

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

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

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

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

2 个答案:

答案 0 :(得分:14)

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

sqlcmd /E /S . /v variable=MyTable /Q "select * from $(variable)"

这将从MyTable中选择。正如您所猜测的,/v是定义变量的开关。另一方面,SSMS默认情况下不会将SQL解释为变量替换。通过选中“在SQLCMD模式下打开查询窗口”选项,可以使SSMS 成为

有关模式的详细信息,请参阅Using sqlcmd with Scripting Variables

答案 1 :(得分:0)

您尝试运行的命令:

select $('test')

无效。如您所知,当您删除“$”时,它可以工作:

select ('test')

我不确定你真正想做什么,你有三个"双引号字符,你可以尝试使用这个命令:

select '$(test)'

将是:

sqlcmd -S SERVER -E -d DATABASE -q "select ''$(test)''"