sqlcmd在insert语句中使用jQuery

时间:2012-03-20 18:59:30

标签: sql sql-server sqlcmd

我需要对MSSQL数据库进行一些播种,并且我有许多需要按顺序运行的sql文件。

基本上我有一个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 个答案:

答案 0 :(得分: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:错误:文件'C:\ failedInSqlCmdMode.sql'中命令'#'附近第2行的语法错误。

我在连接到SQL Server 2008 R2的Windows 7 x64上测试了这个。