2012-03-20 30 views
3

MSSQLデータベースをシードする必要があり、多くのSQLファイルを順番に実行する必要があります。sqlcmd with jQuery with insertステートメント

基本的に私は

SET NOCOUNT ON 
GO 

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

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

... start.sqlファイルを持っていると私は、問題は私がDBにHTMLデータを挿入していたファイルの一つである sqlcmd -S LOCALHOST\SqlExpress -E -i "C:\sql\start.sql" -x

でこれを実行していますし、その中にjQuery $('#stuff')を持つスクリプト参照がいくつかあります。これは、SQL変数置換のために構文エラーをスローしています。

私は-xオプションが置換を停止することを期待していましたが、まだエラーが発生しました。私は何か他のものを逃している?

答えて

1

SQL Command Mode$(something)variableとして扱っています。 SQLCMDモードでは、PRINT '$test'の結果は$testであろうが、PRINT '$(test)' -xオプション(小文字 X)を使用してメッセージ'test' scripting variable not defined.を戻します実行するけれども、そのメッセージを返さないべき

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) 

は、私は、Windowsのコマンドプロンプトで次を実行しているをテスト

コマンドの最後から-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

+0

私は私のアプローチを変更し、 '' x' getが適用されていることを確認するために必要なすべてのファイルに対してsqlcmdを実行するbatファイルを作成しました。そして、それはうまくいくようです。助けてくれてありがとう! – jcreamer898

+0

私はSSMS経由で生成したバックアップスクリプトからあらゆる種類の奇妙な構文エラーを取得していました。変数のような構文を持つHTMLコンテンツがいくつかの列に含まれています。 '-x'フラグを使うと、私のために完璧に動作しました。 – daveaglick