사후 배포 스크립트에서 : r SQLCMD 명령이 왜 잘못된 것으로 표시됩니까?


18

나는 배포 후 스크립트로 몇 번 일했으며 항상 직관적으로 빌드 작업 "PostDeploy"를 사용했습니다. 이제 처음으로 스크립트 템플릿의 내장 명령어에 따라 ":r somescript.sql"구문 을 사용하려고 합니다.

즉시이 줄은 잘못된 것으로 표시됩니다.

" ':'옆의 SQL80001 구문이 잘못되었습니다."

PDS를 빌드 조치 "없음"으로 설정하라는 제안을 찾았습니다. 이것은 도움이되지 않으며 오류가 유지됩니다. 내가 여기서 무엇을 놓치고 있습니까?


죄송합니다. "스크립트에 어떤 동작이 설정되어 있습니까?": r "이 포함되어 있습니까?" :)
Ed Elliott

답변:


16

빌드 프로세스 중에 오류가 발생하고 실제 구문 오류가없고 단순하다고 가정합니다.

:r path\to\file.sql

가져온 파일이 존재하지 않는 경우에도 오류가 발생합니다. 파일의 위치를 ​​확인하십시오. 절대 경로를 제공하지 않은 경우 경로는 솔루션 폴더를 기준으로합니다 (적어도 나에게는 해당됩니다).

개발하는 동안 빌드 프로세스에서보고하는 오류를 확인하려면 Visual Studio의 T-SQL 편집기에서 "SQLCMD 모드"를 활성화해야합니다. 버튼 표시 줄의 오른쪽 끝에 "!"가있는 버튼이 있습니다. 그것을 가능하게해야합니다. 또는 SQL 메뉴 로 이동하여 Transact-SQL 편집기-> 를 선택하고 실행 설정-> 을 선택한 다음 SQLCMD 모드를 선택하십시오 . 이제 스크립트를 실행 :r하면 빌드 / 게시 프로세스와 마찬가지로 스크립트가 올바르게 해석됩니다 .

또한 PDS (Post Deploy Script)에는 빌드 조치PostDeploy로 설정되어 있어야 합니다. None 으로 설정 하면 SSDT 빌드 프로세스에서 완전히 건너 뜁니다.


4

유효한 오류

:r somescript.sql유효한 SQL 이 아니기 때문 입니다. 구문 오류가 표시되는데, 이는 오류 메시지의 정확한 내용입니다.

SQL80001 : ':'근처의 구문이 올바르지 않습니다.

SQLCMD 모드

배치 후 스크립트는 SQLCMD 모드에서 실행됩니다.

sqlcmd 유틸리티를 사용하면 명령 프롬프트, SQLCMD 모드의 쿼리 편집기, Windows 스크립트 파일 또는 SQL Server의 운영 체제 (Cmd.exe) 작업 단계에서 Transact-SQL 문, 시스템 프로 시저 및 스크립트 파일을 입력 할 수 있습니다. 요원 직업. 이 유틸리티는 ODBC를 사용하여 Transact-SQL 일괄 처리를 실행합니다.

해결

DB에 연결하고 Visual Studio에서 sql을 실행할 수 있습니다. SSMS 내에서 동일한 스크립트를 열면 동일한 구문 오류가 표시됩니다. 그러나 SSMS와 Visual Studio 모두에서 SQLCMD 모드를 "활성화"할 수 있습니다.

VS 2017

  • SQL 스크립트가 포함 된 편집기를 마우스 오른쪽 버튼으로 클릭하십시오.
  • 실행 설정을 클릭하십시오.
  • SQLCMD 모드를 클릭하십시오.
  • SQL 메뉴에서 동일한 작업을 수행 할 수 있습니다.

SSMS 17, SSMS 18

  • 쿼리 (메뉴 항목)
  • SQLCMD 모드

또한보십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.