2012-03-20 46 views
3

我需要做一些MSSQL數據庫的種子,我有許多需要按順序運行的sql文件。sqlcmd與插入語句中的jQuery

基本上我有一個start.sql文件...

SET NOCOUNT ON 
GO 

PRINT 'First File' 
:r "c:\sql\firstfile.sql" 

PRINT 'Second File' 
:r "c:\sql\secondfile.sql" 

而且我與sqlcmd -S LOCALHOST\SqlExpress -E -i "C:\sql\start.sql" -x

的問題是,我將HTML數據到數據庫中的一個文件,並運行此它有一些腳本引用,其中包含jQuery $('#stuff')。這是由於SQL變量替換引發的語法錯誤。

我希望-x選項將停止替換,但我仍然有錯誤。我錯過了別的嗎?

回答

1

SQL Command Mode應該將$(something)視爲variable

當SQLCMD模式下,PRINT '$test'結果將是$test,但在執行PRINT '$(test)'將返回消息'test' scripting variable not defined.使用-x選項(小寫 X)不應該返回的消息,雖然。

我測試了這一點通過運行在Windows命令提示符下輸入:

sqlcmd -S localhost -E -i "c:\failsInSqlCmdMode.sql" -x 

凡.SQL腳本包含以下SQL:

declare @test varchar(10) 
set @test = '$(#stuff)' 
select @test 
go 

結果是:

---------- 
$(#stuff) 

(1 rows affected) 

只有當我從命令結尾刪除-x時,出現錯誤:

Sqlcmd: Error: Syntax error at line 2 near command '#' in file 'C:\failsInSqlCmdMode.sql'.

我在連接到SQL Server 2008 R2的Windows 7 x64上測試了這一點。

+0

你有沒有嘗試用':c:\ failsInSqlCmdMode.sql'實際上用':r c:\ another \ file.sql'調用其他.sql文件。因爲這是我的問題。 – jcreamer898 2012-03-21 14:53:37

+0

我改變了我的方法,只是做了一個bat文件,爲我需要的每個文件都做一個sqlcmd,以確保應用了'x'。這似乎工作。謝謝您的幫助! – jcreamer898 2012-03-21 18:10:07

+0

我從通過SSMS生成的備份腳本中收到各種奇怪的語法錯誤。發現一些列的HTML內容具有類似於變量的語法。使用'-x'標誌對我來說非常合適。 – daveaglick 2014-12-03 14:40:59