sqlcmd с jQuery в операторах вставки - PullRequest
3 голосов
/ 20 марта 2012

Мне нужно выполнить заполнение базы данных 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 Ответ

1 голос
/ 21 марта 2012

Режим команд SQL должен обрабатывать $(something) как переменную .

В режиме 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: Ошибка: синтаксическая ошибка в строке 2 рядом с командой '#' в файле 'C: \ failsInSqlCmdMode.sql'.

Я тестировал это на Windows 7 x64, подключаясь к SQL Server 2008 R2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...