변수
SSIS에는 크게 두 가지 유형의 변수가 있습니다. 하나는 시스템 변수이며, 다른 하나는 사용자 변수입니다. 이러한 구분은 변수 정의 시 네임 스페이스로 구분이 됩니다.
시스템 변수는 패키지 생성 일자, 패키지 GUID, Version GUID, Machine Name 등 패키지 수행 환경에 대한 정보가 저장되는 변수로써, 사용자가 해당 값을 변경할 수는 없습니다.
사용자 변수는 패키지 내에서 작업을 수행할 때 사용되는 변수로 사용자가 필요에 따라 추가하며, 값을 변경할 수 있습니다.
SQL 2000 DTS에서의 변수와 가장 큰 차이점은 사용자 변수 정의 시 범위가 설정되는 것입니다.
DTS에서 하나의 패키지에서는 범위의 개념이 없이 모든 동일한 수준에서 처리가 되었습니다. 하지만, SSIS에서는 컨테이너라는 개체를 기준으로 범위가 정해집니다. 작업 개체 역시 하나의 작업 호스트 컨테이너이기 때문에, 변수의 범위로 정의될 수 있습니다.
위의 그림에서, [변수1]은 변수예제.dtsx라는 전체 범위에서 정의된 변수입니다. 따라서 [변수1]은 패키지의 어떠한 영역에서도 이용 가능합니다.
[변수2]는 하위 컨테이너인 시퀀스 컨테이너(B)의 범위에서 정의된 변수로써, 시퀀스 컨테이너(B) 내에 포함된 SQL 실행 작업(B’)이나 데이터 흐름 작업(C) 등과 같은 하위 작업에서는 사용 가능하지만, SQL 실행 작업(A’)에서는 사용할 수 없습니다.
[변수3]은 데이터 흐름 작업(C)의 범위에서 정의된 변수이기 때문에, 데이터 흐름 작업(C) 외에는 사용할 수 없습니다.
변수가 사용할 범위의 설정은 변수 정의 시에 할 수 있는 사항은 아니며, 현재 선택되어 있는 수준이 자동으로 범위가 됩니다. 즉, 데이터 흐름 작업(C) 내의 여러 변환에서 변수를 정의할 경우, 자동으로 해당 변수의 범위는 현재 작업 중인 컨테이너인 데이터 흐름 작업(C)가 됩니다.
만약 데이터 흐름 작업(C) 에서 상위 범위의 변수를 정의하기 위해서는 해당 수준의 컨테이너로 나온 후, 변수를 정의해야 합니다.
변수 창의 회색 X 버튼을 누르면 시스템 변수 리스트가 나타나며, 파란색 X 버튼을 누르면 현재 패키지에서 정의된 모든 사용자 변수가 나타납니다. 이 버튼이 눌러지지 않은 상태에서는 현재 컨테이너에서 사용 가능한 변수의 리스트만 나타납니다.
제어 흐름 영역 및 데이터 흐름 영역, 이벤트 처리기 작업 영역에서 사용 가능한 시스템 변수는 약간씩 차이가 있습니다. 다음 표를 시스템 변수 리스트를 참고하시기 바랍니다.
? 패키지 수준의 시스템 변수
시스템 변수 |
데이터 형식 |
설명 |
CancelEvent |
Int32 |
0이 아닌 값으로 설정되는 경우 작업 실행이 중지됨을 나타내는 이벤트 핸들입니다. |
CreationDate |
DateTime |
패키지를 만든 날짜입니다. |
CreatorComputerName |
String |
패키지를 만든 컴퓨터입니다. |
CreatorName |
String |
패키지를 만든 사용자의 이름입니다. |
ExecutionInstanceGUID |
String |
실행 중인 패키지의 고유 식별자입니다. |
InteractiveMode |
Boolean |
패키지가 대화형 모드에서 실행 중인지 여부를 나타냅니다. SSIS 디자이너에서 패키지를 실행 중인 경우 이 속성은 True로 설정됩니다. DTExec 명령 프롬프트 유틸리티를 사용하여 패키지를 실행 중인 경우 이 속성은 False로 설정됩니다. |
LocaleId |
Int32 |
패키지에서 사용되는 로캘입니다. |
MachineName |
String |
패키지가 실행 중인 컴퓨터 이름입니다. |
OfflineMode |
Boolean |
패키지가 오프라인 모드인지 여부를 나타냅니다. 오프라인 모드에서는 데이터 원본에 연결하지 않습니다. |
PackageID |
String |
패키지의 고유 식별자입니다. |
PackageName |
String |
패키지의 이름입니다. |
StartTime |
DateTime |
패키지 실행을 시작한 시간입니다. |
UserName |
String |
패키지를 시작한 사용자의 계정입니다. 사용자 이름은 도메인 이름에 의해 한정됩니다. |
VersionBuild |
Int32 |
패키지 버전입니다. |
VersionComment |
String |
패키지 버전에 대한 설명입니다. |
VersionGUID |
String |
버전의 고유 식별자입니다. |
VersionMajor |
Int32 |
패키지의 주 버전입니다. |
VersionMinor |
Int32 |
패키지의 부 버전입니다. |
? 컨테이너의 시스템 변수
시스템 변수 |
데이터 형식 |
설명 |
LocaleId |
Int32 |
컨테이너에서 사용되는 로캘입니다. |
? 작업 수준의 시스템 변수
시스템 변수 |
데이터 형식 |
설명 |
CreationName |
String |
작업 이름입니다. |
LocaleId |
Int32 |
작업에서 사용되는 로캘입니다. |
TaskID |
String |
작업의 고유 식별자입니다. |
TaskName |
String |
작업의 이름입니다. |
TaskTransactionOption |
Int32 |
작업에서 사용되는 트랜잭션 옵션입니다. |
? 이벤트 처리기의 시스템 변수
시스템 변수 |
데이터 형식 |
설명 |
이벤트 처리기 |
Cancel |
Boolean |
오류, 경고 또는 쿼리 취소가 발생할 때 이벤트 처리기 실행이 중지되는지 여부를 나타냅니다. |
OnError |
OnWarning | |||
OnQueryCancel | |||
ErrorCode |
Int32 |
오류 식별자입니다. |
OnError |
OnInformation | |||
OnWarning | |||
ErrorDescription |
String |
오류에 대한 설명입니다. |
OnError |
OnInformation | |||
OnWarning | |||
ExecutionStatus |
Boolean |
현재 실행 상태입니다. |
OnExecStatusChanged |
ExecutionValue |
DBNull |
실행 값입니다. |
OnTaskFailed |
LocaleId |
Int32 |
이벤트 처리기에서 사용되는 로캘입니다. |
All |
PercentComplete |
Int32 |
완료된 작업의 백분율입니다. |
OnProgress |
ProgressCountHigh |
Int32 |
OnProgress 이벤트에 의해 처리된 전체 작업 개수를 나타내는 64비트 값의 상위 부분입니다. |
OnProgress |
ProgressCountLow |
Int32 |
OnProgress 이벤트에 의해 처리된 전체 작업 개수를 나타내는 64비트 값의 하위 부분입니다. |
OnProgress |
ProgressDescription |
String |
진행률에 대한 설명입니다. |
OnProgress |
Propagate |
Boolean |
이벤트가 상위 수준의 이벤트 처리기로 전달되는지 여부를 나타냅니다. |
All |
SourceDescription |
String |
이벤트 처리기에서 이벤트를 발생시킨 실행 개체에 대한 설명입니다. |
All |
SourceID |
String |
이벤트 처리기에서 이벤트를 발생시킨 실행 개체의 고유 식별자입니다. |
All |
SourceName |
String |
이벤트 처리기에서 이벤트를 발생시킨 실행 개체의 이름입니다. |
All |
VariableDescription |
String |
변수 설명입니다. |
OnVariableValueChanged |
VariableID |
String |
변수의 고유 식별자입니다. |
OnVariableValueChanged |
'연구개발 > DTS & SSIS' 카테고리의 다른 글
기본 강좌 41 - 구성 (0) | 2009.06.20 |
---|---|
기본 강좌 40 - 식 (0) | 2009.06.20 |
따라하기 - 스크립트 구성 요소 - 대상 (0) | 2009.06.20 |
따라하기 - 스크립트 구성 요소 - 변환 (0) | 2009.06.20 |
따라하기 - 스크립트 구성 요소 - 원본 (0) | 2009.06.20 |