Transact-SQL 편집기에서 SQLCMD 스크립트 편집

먼저 SQLCMD 모드를 사용하도록 설정하면 Transact-SQL 편집기에서 스크립트를 작성하거나 편집할 때 Transact-SQL 명령과 SQLCMD 명령을 함께 사용할 수 있습니다.자세한 내용은 방법: Transact-SQL 편집기에서 SQLCMD 모드 사용을 참조하십시오.

SQLCMD 스크립트 작성 및 편집

같은 스크립트에 SQLCMD 명령과 Transact-SQL 명령을 모두 포함하려면 스크립트가 다음 요구 사항을 준수해야 합니다.

  • SQLCMD 명령은 줄에서 첫 번째 문이어야 합니다.

  • 각 줄에서 SQLCMD 명령이 하나만 허용됩니다.

  • SQLCMD 명령은 주석이나 공백 뒤에 올 수 있습니다.

  • 단일 줄 주석 문자는 두 개의 하이픈(--)이며 줄의 시작 부분에 표시되어야 합니다.주석 문자는 SQLCMD 명령이 실행되지 않도록 합니다.

  • 각 SQLCMD 명령 앞의 줄 시작 부분에 콜론을 추가하여 Transact-SQL 명령과 명확하게 구분해야 합니다.단, 콜론이 선택 사항인 exit 및 !! 명령은 예외입니다.

  • SQLCMD 스크립트의 일부로 정의된 환경 변수 및 변수를 사용할 수 있지만 기본 제공 SQLCMD 변수는 사용할 수 없습니다.

지원되는 SQLCMD 구문

사용할 수 있는 명령은 다음과 같습니다.

  • :r FileName
    FileName에 지정한 파일에서 추가 Transact-SQL 문과 SQLCMD 명령을 문 캐시로 구문 분석합니다. FileName은 Visual Studio의 시작 디렉터리를 기준으로 읽혀집니다.일괄 처리 종결자가 나타난 후 이 파일이 읽혀지고 실행됩니다.:r 명령을 여러 개 실행할 수 있습니다.파일에는 도구, 옵션에서 정의된 일괄 처리 종결자를 포함하여 모든 SQLCMD 명령이 포함될 수 있습니다.배포 전 또는 배포 후 스크립트에 :r을 사용하여 다른 스크립트를 포함할 수 있습니다.

  • :setvar Variable Value
    스크립팅 변수를 정의합니다.스크립팅 변수는 $(Variable) 형식을 사용합니다.변수 이름은 대/소문자를 구분하지 않습니다.:Setvar을 사용하여 정의한 변수와 환경 변수의 이름이 같은 경우 :setvar을 사용하여 정의한 변수가 우선적으로 적용됩니다.변수 이름에는 공백 문자를 포함해서는 안 됩니다.변수 이름은 $(var) 등의 변수 식과 다른 형식이어야 합니다.스크립팅 변수의 문자열 값에 공백이 포함된 경우 값을 따옴표로 묶어야 합니다.스크립팅 변수 값을 지정하지 않으면 스크립팅 변수가 삭제됩니다.

  • :connect ServerName[\InstanceName] [-l Timeout] [-U UserName [-P Password]]
    SQL Server 인스턴스에 연결하고 Timeout에 지정한 시간(초)이 경과한 후 현재 연결을 닫습니다.제한 시간 없음을 나타내는 "-l 0"이나 양수 시간(초)(예: "-l 30")을 지정할 수 있습니다.If you provide neither options nor environment variables for UserName 및 Password에 대한 옵션과 환경 변수를 제공하지 않으면 로그온 시 Windows 인증 모드가 사용됩니다. Transact-SQL 편집기에서 connect SQLCMD 명령을 실행하는 경우 데이터베이스 엔진에 연결 창을 사용하여 데이터베이스 서버에 연결하라는 메시지가 표시됩니다.

  • :on error [exit | ignore]
    스크립트나 일괄 처리를 실행하는 동안 오류가 발생할 때 수행할 동작을 설정합니다.exit 옵션을 사용하면 해당 오류 값이 표시되면서 실행이 종료됩니다.ignore 옵션을 사용하면 Transact-SQL 편집기가 오류를 무시하고 일괄 처리 또는 스크립트를 계속 실행합니다.기본적으로 오류 메시지가 출력됩니다.

  • :out Filename | stderr | stdout
    Filename에 지정한 파일이나 메시지 탭으로 모든 쿼리 결과를 리디렉션합니다.Visual Studio에서 stderr 및 stdout은 출력을 메시지 탭으로 보냅니다. 스크립트에 out 명령이 여러 번 나타날 수 있습니다.기본적으로 출력은 메시지 탭으로 보냅니다.Filename을 지정하면 Visual Studio에서 파일을 만들거나 열어 쿼리 결과를 받습니다.파일이 이미 있는 경우 출력을 쓰기 전에 0바이트로 잘립니다.

  • :error Filename | stderr | stdout
    Filename에 지정한 파일이나 메시지 탭으로 모든 오류 출력을 리디렉션합니다.Visual Studio에서 stderr 및 stdout은 출력을 메시지 탭으로 보냅니다.  스크립트에 error 명령이 여러 번 나타날 수 있습니다.기본적으로 오류 출력은 stderr로 보냅니다.Filename을 지정하면 Visual Studio에서 파일을 만들거나 열어 오류 메시지를 받습니다.파일이 이미 있는 경우 오류 메시지를 쓰기 전에 0바이트로 잘립니다.

  • [:]exit
    일괄 처리를 실행하거나 값을 반환하지 않고 현재 일괄 처리를 중지합니다.

  • [:]exit()
    일괄 처리를 실행한 후 중지되고 값을 반환하지 않습니다.

  • [:]exit(Query)
    Query를 포함한 일괄 처리를 실행하고 Query 결과를 반환한 후 중지됩니다.

  • [:]!!Operating system command
    Visual Studio를 실행하는 컴퓨터에서 운영 체제 명령을 실행합니다.운영 체제 명령을 실행하려면 느낌표 두 개(!!)로 줄을 시작하고 운영 체제 명령을 입력합니다.

참고

SQLCMD를 명령줄에서 시작하지 않기 때문에 SQLCMD 모드에서 Transact-SQL 편집기를 실행하는 경우 몇 가지 제한 사항이 있습니다.변수와 같은 명령줄 매개 변수를 전달할 수 없으며, Transact-SQL 편집기는 운영 체제 프롬프트에 응답하는 기능이 없으므로 대화형 문을 실행하지 않도록 주의해야 합니다.

위에 나열되지 없는 SQLCMD 명령은 Transact-SQL 편집기에서 지원되지 않습니다.지원되지 않는 SQLCMD 키워드가 포함된 스크립트를 실행하면 Transact-SQL 편집기에서 지원되지 않는 각 키워드의 대상에 "Command <unsupported command> is not supported. String was not processed."라는 메시지를 보냅니다.스크립트가 성공적으로 실행되지만 지원되지 않는 명령은 무시됩니다.

SQLCMD 스크립트의 색 지정

SQLCMD 모드를 사용하도록 설정하면 스크립트의 색이 지정됩니다.Transact-SQL 키워드에 대한 색 구분은 동일하게 유지됩니다.SQLCMD 명령은 회색 배경과 함께 표시됩니다.

예제

다음 예제에서는 SQLCMD 문을 사용하여 c:\TempSqlcmdOutput이라는 출력 폴더와 testoutput.txt라는 출력 파일을 만듭니다.또한 이 예제에서는 Transact-SQL SELECT 문 두 개와 다른 SQLCMD 명령을 실행하여 Visual Studio 프로그램의 현재 디렉터리를 출력합니다.결과 파일에는 DIR 문의 메시지 출력과 Transact-SQL 문의 결과 출력이 차례로 표시됩니다.이 예제에서는 SQL Server 인스턴스에 이미 연결되었으며 SQLCMD 모드가 사용하도록 설정되었다고 가정합니다.

!!mkdir c:\TempSqlcmdOutput
:out c:\TempSqlCmdOutput\testoutput.txt
select @@VERSION as 'Server Version'
!!dir
GO
select @@SERVERNAME as 'Server Name'
GO 4

참고 항목

태스크

방법: 쿼리 실행

방법: 쿼리 실행 및 결과에 대한 옵션 설정

개념

쿼리 결과 개요