2012-03-20 3 views
3

MSSQL 데이터베이스의 일부 시드 작업을 수행해야하며 순서대로 실행해야하는 많은 sql 파일이 있습니다.삽입 문에 jQuery가있는 sqlcmd

기본적으로

나는 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

문제는 제가 DB에 HTML 데이터를 삽입하고있는 파일 중 하나이며, 이것을 실행하고 그것에는 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