2010-03-17 78 views
3

當我在SQL管理運行這個select '$(''test'')' 2008工作室返回$('test')SQLCMD語法錯誤

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

如果我刪除它的工作美元符號。 「$」是一個特殊字符嗎?

這是一個sqlcmd錯誤?我如何更改腳本以獲得所需的結果。

+0

我仍然對@KM感到困惑,你爲什麼要從'sqlcmd'向SQL Server發送'SELECT $(''test'')'而你發送'SELECT'$(''test' ')'來自SSMS。 – binki 2013-09-16 19:38:51

+0

我不知道爲什麼這兩個陳述是不同的那種方式。這是通過查詢從表格發送javascript的遺留代碼。我需要能夠在命令行上通過腳本創建數據庫,並且遇到了sqlcmd變量的問題。 – Troy 2013-10-01 12:23:07

回答

14

是,$(id)在SQLCMD特殊的語義:它是一個變量代換。您可以運行如下命令:

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

並且這將從MyTable中選擇。正如你猜測的那樣,/v是定義變量的開關。另一方面,SSMS默認情況下不會解釋變量替換的SQL。 SSMS 可以通過選中「在SQLCMD模式下打開查詢窗口」選項來使執行此操作。

有關模式的詳細信息,請參閱Using sqlcmd with Scripting Variables

+6

謝謝,這就是我需要知道的。 -x開關禁用變量,因此它可以工作:sqlcmd -S SERVER -E -d DATABASE -x -q「select $(''test'')」 – Troy 2010-03-17 18:58:50

+0

謝謝。我需要知道如何使用-x參數禁用變量。我在一個巨大的副本上遇到了一個錯誤,並且直到現在都找不到原因。 – Brain2000 2013-07-12 16:13:10

+0

@ Brain2000如果您有任何問題,請發表問題,而不是發表評論。 – 2013-07-12 18:32:27

0

命令你正在嘗試運行:

select $('test') 

無效。當你注意,當你刪除「$」它的工作原理:

select ('test') 

我不知道你真正想要做的,你有三個"雙引號字符,你可以嘗試使用這個命令:

select '$(test)' 

具體做法是:

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