Transact-SQL 편집기에서 SQLCMD 스크립트 편집
업데이트: 2007년 11월
T-SQL(Transact-SQL) 편집기에서 스크립트를 작성하거나 편집하는 경우 먼저 SQLCMD 모드를 사용하도록 설정하면 T-SQL 및 SQLCMD 명령을 함께 사용할 수 있습니다. 자세한 내용은 방법: Transact-SQL 편집기에서 SQLCMD 모드 사용을 참조하십시오.
SQLCMD 스크립트 작성 및 편집
동일한 스크립트에 SQLCMD 명령과 T-SQL 명령을 모두 포함하려는 경우 스크립트가 다음 요구 사항에 부합하는지 확인해야 합니다.
SQLCMD 명령을 줄의 첫 번째 문으로 추가해야 합니다.
각 줄에 SQLCMD 명령을 두 개 이상 추가할 수 없습니다.
SQLCMD 명령 앞에 주석이나 공백을 추가할 수 있습니다.
주석 문자를 사용하여 SQLCMD 명령이 실행되지 않도록 할 수 있습니다.
한 줄로 된 각 주석 문자를 구성하려면 줄의 시작 부분에 두 개의 하이픈을 사용해야 합니다.
SQLCMD 명령을 T-SQL 명령과 명확하게 구분하려면 각 SQLCMD 명령 앞에 콜론을 추가해야 합니다.
환경 변수와 SQLCMD 스크립트의 일부로 정의된 변수를 사용할 수 있지만 기본 제공 SQLCMD 변수는 사용할 수 없습니다.
SQLCMD 구문 사용
다음과 같은 명령을 사용할 수 있습니다.
:r 파일 이름
FileName에서 지정하는 파일의 추가 T-SQL 문 및 SQLCMD 명령을 문 캐시로 구문 분석합니다. FileName은 Visual Studio의 시작 디렉터리를 기준으로 읽습니다. 일괄 처리 종결자가 나오면 파일이 읽히고 실행됩니다. 여러 개의 :r 명령을 실행할 수 있습니다. 파일에는 도구, 옵션에 정의되어 있는 일괄 처리 종결자를 비롯한 모든 SQLCMD 명령이 포함될 수 있습니다. 배포 전 또는 배포 후 스크립트에 :r을 사용하여 다른 스크립트를 포함할 수 있습니다.:setvar 변수 값
스크립팅 변수를 정의합니다. 스크립팅 변수의 형식은 $(Variable)과 같습니다. 변수 이름은 대/소문자를 구분합니다. :Setvar을 사용하여 정의한 변수의 이름이 환경 변수의 이름과 같은 경우 :setvar을 사용하여 정의한 변수가 우선권을 가집니다. 변수 이름에는 공백 문자가 포함되면 안 됩니다. 변수 이름은 $(var) 등의 변수 식과 같은 형식일 수 없습니다. 스크립팅 변수의 문자열 값에 공백이 포함되어 있는 경우 해당 값을 따옴표로 묶어야 합니다. 스크립팅 변수의 값이 지정되어 있지 않은 경우 스크립팅 변수가 삭제됩니다.:connect 서버 이름[\인스턴스 이름] [-l 시간 제한] [-U 사용자 이름 [-P 암호]]
Microsoft SQL Server의 인스턴스에 연결하고 시간 제한으로 지정한 시간(초)이 경과되면 현재 연결을 닫습니다. "-l 0"을 지정하여 시간 제한을 무한으로 만들거나 "-l 30"과 같은 양수 시간(초)을 지정할 수 있습니다. 사용자 이름 및 암호에 대해 옵션과 환경 변수를 모두 제공하지 않으면 로그온에 Windows 인증 모드가 사용됩니다.:on error [exit | ignore]
스크립트 또는 일괄 처리 실행 중에 오류가 발생할 경우 수행할 작업을 설정합니다. exit 옵션을 사용할 경우 적절한 오류 값과 함께 실행이 종료됩니다. ignore 옵션을 사용할 경우 T-SQL 편집기는 오류를 무시하고 일괄 처리나 스크립트를 계속 실행합니다. 기본적으로 오류 메시지가 인쇄됩니다.:listvar
현재 설정되어 있는 스크립팅 변수의 목록을 표시합니다. SQLCMD 모드의 현재 세션에서 설정한 스크립팅 변수만 나타납니다.:exit
일괄 처리를 실행하거나 값을 반환하지 않고 현재 일괄 처리를 중지합니다.:exit()
일괄 처리를 실행한 다음 중지하고 값을 반환하지 않습니다.:exit(쿼리)
쿼리를 포함한 일괄 처리를 실행하고 쿼리의 결과를 반환한 다음 중지합니다.
예제
통합 보안을 사용하여 SQL Server myserver의 instance1 인스턴스에 연결하려면 다음 명령을 포함해야 합니다.
:connect myserver\instance1.
스크립팅 변수를 사용하여 myserver의 기본 인스턴스에 연결하려면 다음 명령을 포함해야 합니다.
:setvar myusername test
:setvar myservername myserver
:connect $(myservername) $(myusername)
C:\Files의 selectFromTable.sql 파일에 저장된 간단한 쿼리를 실행하려면 다음 명령을 포함해야 합니다.
:SETVAR tablevar Suppliers
:r C:\Files\selectFromTable.sql
GO
:SETVAR tablevar Customers
:r C:\Files\selectFromTable.sql
GO
selectFromTable.sql 파일에는 다음 예제 쿼리가 포함되어 있습니다.
SELECT * FROM $(tablevar)
GO