패키지에서 속성 식 사용
적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime
속성 식은 런타임에 속성의 동적 업데이트를 사용하도록 설정하기 위해 속성에 할당된 식입니다. 예를 들어 속성 식은 변수에 저장된 전자 메일 주소를 삽입하여 메일 보내기 태스크에서 사용하는 받는 사람 줄을 업데이트할 수 있습니다.
식은 패키지, 태스크, Foreach 루프, For 루프, 시퀀스, Foreach 열거자, 이벤트 처리기, 패키지 또는 프로젝트 수준의 연결 관리자 또는 로그 공급자에 추가할 수 있습니다. 이러한 개체의 읽기/쓰기 속성은 속성 식을 구현할 수 있습니다. 또한 Integration Services는 데이터 흐름 구성 요소의 일부 사용자 지정 속성에서 속성 식을 사용할 수 있습니다. 변수 및 선행 제약 조건은 속성 식을 지원하지 않지만 식을 사용할 수 있는 특수 속성을 포함합니다.
속성 식은 다음과 같은 다양한 방법으로 업데이트할 수 있습니다.
사용자 정의 변수는 패키지 구성에 포함된 다음 패키지가 배포될 때 업데이트할 수 있습니다. 런타임에 속성 식은 업데이트된 변수 값을 사용하여 평가됩니다.
식에 포함된 시스템 변수는 런타임에 업데이트되어 속성 평가 결과가 변경됩니다.
날짜 및 시간 함수는 런타임에 평가되며 속성 식에 업데이트된 값을 제공합니다.
식의 변수는 스크립트 태스크와 스크립트 구성 요소가 실행하는 스크립트에 의해 업데이트될 수 있습니다.
식은 Microsoft Integration Services 식 언어를 사용하여 빌드됩니다. 식은 식 언어에서 제공하는 연산자, 함수 및 형식 캐스트와 함께 시스템 또는 사용자 정의 변수를 사용할 수 있습니다.
참고 항목
사용자 정의 변수 및 시스템 변수의 이름은 대/소문자를 구분합니다.
자세한 내용은 Integration Services(SSIS) 식을 참조하세요.
속성 식의 중요한 용도는 배포된 패키지의 각 인스턴스 구성을 사용자 지정할 수 있다는 것입니다. 이렇게 하면 다양한 환경에 대한 패키지 속성을 동적으로 업데이트할 수 있습니다. 예를 들어 연결 관리자의 연결 문자열에 변수를 할당하는 속성 식을 만든 다음 패키지를 배포할 때 런타임에 연결 문자열이 정확한지 확인하고 변수를 업데이트할 수 있습니다. 패키지 구성은 속성 식을 계산하기 전에 로드됩니다.
속성은 하나의 속성 식만 사용할 수 있으며 속성 식은 하나의 속성에만 적용할 수 있습니다. 그러나 동일한 속성 식을 여러 개 빌드하고 다른 속성에 할당할 수 있습니다.
일부 속성은 열거자의 값을 사용하여 설정됩니다. 속성 식에서 열거자 멤버를 참조하는 경우 열거자 멤버의 이름에 해당하는 숫자 값을 사용해야 합니다. 예를 들어 속성 식에 DTSLoggingMode 열거 값을 사용하는 LoggingMode 속성이 설정된 경우에는 속성 식에 익숙한 이름인 Enabled, Disabled, 또는 UseParentSetting 대신 0, 1 또는 2를 사용해야 합니다. 자세한 내용은 속성 식의 열거 상수를 참조하세요.
속성 식 사용자 인터페이스
Integration Services는 속성 식을 작성하고 관리하기 위한 도구 집합을 제공합니다.
작업에 대한 사용자 지정 편집기, For 루프 컨테이너 및 Foreach 컨테이너에 있는식 페이지. 식 페이지를 사용하여 식을 편집하고 태스크, Foreach 루프 또는 For 루프에서 사용하는 속성 식의 목록을 볼 수 있습니다.
속성 창을 사용하여 식을 편집하고 패키지 또는 패키지 개체가 사용하는 속성 식의 목록을 볼 수 있습니다.
속성 식을 만들고, 업데이트하고, 삭제하기 위한 속성 식 편집기 대화 상자.
식 작성기 대화 상자의 그래픽 도구를 사용하여 식을 작성할 수 있습니다. 식 작성기 대화 상자에서는 검토를 위해 계산 결과를 속성에 할당하지 않고 식을 계산할 수 있습니다.
다음 다이어그램에서는 속성 식을 추가, 변경 및 제거하는 데 사용하는 사용자 인터페이스를 보여 줍니다.
속성 창과 식 페이지에서 식 컬렉션 수준의 찾아보기 단추 (...)를 클릭하여 속성 식 편집기 대화 상자를 엽니다. 속성 식 편집기를 사용하여 속성을 식에 매핑하거나 속성 식을 입력할 수 있습니다. 그래픽 식 도구를 사용하여 식을 만든 다음 식의 유효성을 검사하려면 식 수준의 찾아보기 단추 (...) 를 클릭하여 식 작성기 대화 상자를 연 다음 식을 만들거나 수정하고 필요에 따라 식의 유효성을 검사합니다.
속성 식 편집기 대화 상자에서 식 작성기 대화 상자를 열 수도 있습니다.
속성 식을 사용하여 작업하기
데이터 흐름 구성 요소의 속성 식 설정
SQL Server Data Tools(SSDT)에서 패키지를 생성하는 경우 속성 식을 지원하는 데이터 흐름 구성 요소의 속성이 속한 데이터 흐름 태스크에 노출됩니다. 데이터 흐름 구성 요소의 속성 식을 추가, 변경 및 제거하려면 데이터 흐름 구성 요소가 속한 데이터 흐름의 데이터 흐름 태스크를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다. 속성 창에 속성 식을 사용할 수 있는 데이터 흐름 구성 요소의 속성이 나열됩니다. 예를 들어 SampleCustomer라는 데이터 흐름에서 행 샘플링 변환의 SamplingValue 속성에 대한 속성 식을 만들거나 수정하려면 행 샘플링 변환이 속한 데이터 흐름의 데이터 흐름 태스크를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다. SamplingValue 속성은 속성 창에 나열되며 형식이 [SampleCustomer].[SamplingValue]입니다.
속성 창에서 다른 Integration Services 개체 형식에 대한 속성 식과 동일한 방식으로 데이터 흐름 구성 요소에 대한 속성 식을 추가, 변경 및 제거합니다. 속성 창에서 데이터 흐름 구성 요소에 대한 속성 식을 추가, 변경 또는 제거하는 데 사용하는 다양한 대화 상자 및 작성기에도 액세스할 수 있습니다. 속성 식으로 업데이트할 수 있는 데이터 흐름 구성 요소의 속성에 대한 자세한 내용은 변환 사용자 지정 속성을 참조하세요.
속성 식 로드
속성 식이 로드되는 시기를 지정하거나 제어할 수 없습니다. 패키지 및 패키지 개체의 유효성을 검사할 때 속성 식이 평가되고 로드됩니다. 패키지를 저장하고 SSIS 디자이너에서 연 다음 실행하면 유효성 검사가 수행됩니다.
따라서 패키지를 저장하거나, 패키지를 실행하거나, 속성 식을 추가한 후 패키지를 다시 열 때까지 SSIS 디자이너에서 속성 식을 사용하는 패키지 개체의 속성 값이 업데이트되지 않습니다.
개체 연결 관리자, 로그 공급자 및 열거자의 다양한 형식과 연결된 속성 식은 해당 개체 형식과 관련된 메서드가 호출될 때 로드됩니다. 예를 들어 연결 관리자의 속성은 Integration Services 에서 연결 인스턴스를 만들기 전에 로드됩니다.
속성 식은 패키지 구성이 로드된 후에 로드됩니다. 예를 들어 변수는 먼저 해당 구성에 의해 업데이트된 다음 변수를 사용하는 속성 식이 평가되고 로드됩니다. 즉, 속성 식은 항상 구성에 의해 설정된 변수 값을 사용합니다.
참고 항목
dtexec 유틸리티의 설정 옵션을 사용하여 속성 식을 채울 수 없습니다.
다음 표에는 Integration Services의 속성 식이 평가되고 로드되는 시기가 요약되어 있습니다.
Object type | 로드 및 평가 |
---|---|
패키지, Foreach 루프, For 루프, 시퀀스, 작업 및 데이터 흐름 구성 요소 | 구성을 로드한 후 유효성 검사 전 실행 전에 발생합니다. |
연결 관리자 | 구성을 로드한 후 유효성 검사 전 실행 전에 발생합니다. 연결 인스턴스 만들기 전 |
로그 공급자 | 구성을 로드한 후 유효성 검사 전 실행 전에 발생합니다. 로그를 열기 전에 |
Foreach 열거자 | 구성을 로드한 후 유효성 검사 전 실행 전에 발생합니다. 루프의 각 열거 전 |
Foreach 루프에서 속성 식 사용
Foreach 루프 컨테이너 내에서 사용하는 연결 관리자의 ConnectionString 속성 값을 설정하기 위해 속성 식을 구현하는 것은 종종 유용합니다. 열거자가 현재 값을 루프의 각 반복에 대한 변수에 매핑한 후 속성 식은 이 변수의 값을 사용하여 ConnectionString 속성의 값을 동적으로 업데이트할 수 있습니다.
Foreach 루프에서 사용하는 파일, 다중 파일, 플랫 파일 및 다중 플랫 파일 연결 관리자의 ConnectionString 속성과 함께 속성 식을 사용하려면 몇 가지 사항을 고려해야 합니다. MaxConcurrentExecutables 속성을 1보다 큰 값 또는 -1 값으로 설정하여 여러 실행 파일을 동시에 실행하도록 패키지를 구성할 수 있습니다. -1 값은 동시 실행 가능한 최대 실행 파일 수를 허용하며 이것은 프로세서 수에 2를 더한 값과 같습니다. 실행 파일의 병렬 실행에서 부정적인 결과가 발생하지 않도록 하려면 MaxConcurrentExecutables 값을 1로 설정해야 합니다. MaxConcurrentExecutables가 1로 설정되지 않은 경우 ConnectionString 속성의 값을 보장할 수 없으며 결과를 예측할 수 없습니다.
예를 들어 폴더의 파일을 열거하고 파일 이름을 검색한 다음 SQL 실행 태스크를 사용하여 각 파일 이름을 테이블에 삽입하는 Foreach 루프를 고려해 보세요. MaxConcurrentExecutables가 1로 설정되지 않은 경우 SQL 실행 태스크의 두 인스턴스가 동시에 테이블에 쓰려고 하면 쓰기 충돌이 발생할 수 있습니다.
예제 속성 식
다음 예제 식에서는 속성 식에서 시스템 변수, 연산자, 함수 및 문자열 리터럴을 사용하는 방법을 보여 줍니다.
패키지의 LoggingMode 속성에 대한 속성 식
다음 속성 식을 사용하여 패키지의 LoggingMode 속성을 설정할 수 있습니다. 이 식은 DAY 및 GETDATE 함수를 사용하여 날짜의 날짜 날짜 부분을 나타내는 정수를 가져옵니다. 일이 1이거나 15이면 로깅이 설정되고 그렇지 않으면 로깅 설정이 해제됩니다. 값 1은 LoggingMode 열거자 멤버 Enabled에 해당하는 정수이고, 값 2는 Disabled 멤버에 해당하는 정수입니다. 식에서 열거자 멤버 이름 대신 숫자 값을 사용해야 합니다.
DAY((DT_DBTIMESTAMP)GETDATE())==1||DAY((DT_DBTIMESTAMP)GETDATE())==15?1:2
전자 메일 메시지의 제목에 속성 식 사용
다음 속성 식을 사용하여 메일 보내기 작업의 Subject 속성을 설정하고 유용한 전자 메일 제목을 제공할 수 있습니다. 식에는 문자열 리터럴, 시스템 변수, 연결(+) 및 캐스트 연산자, DATEDIFF 및 GETDATE 함수의 조합을 사용할 수 있습니다. 시스템 변수로는 PackageName
및 StartTime
변수가 있습니다.
"PExpression-->Package: (" + @[System::PackageName] + ") Started:"+ (DT_WSTR, 30) @[System::StartTime] + " Duration:" + (DT_WSTR,10) (DATEDIFF( "ss", @[System::StartTime] , GETDATE() )) + " seconds"
패키지 이름이 EmailRowCountPP이고, 2005년 3월 4일에 실행되고, 실행 기간이 9초이면 식은 다음 문자열로 계산됩니다.
PExpression-->Package: (EmailRowCountPP) Started:3/4/2005 11:06:18 AM Duration:9 seconds.
전자 메일 메시지의 메시지에 속성 식 사용
다음 속성 식을 사용하여 메일 보내기 태스크의 MessageSource 속성을 설정할 수 있습니다. 식에는 문자열 리터럴 조합, 사용자 정의 변수 및 연결 (+) 연산자를 사용합니다. 사용자 정의 변수의 이름은 nasdaqrawrows
, nyserawrows
및 amexrawrows
입니다. 문자열 "\n"은 캐리지 리턴을 나타냅니다.
"Rows Processed: " + "\n" +" NASDAQ: " + (dt_wstr,9)@[nasdaqrawrows] + "\n" + " NYSE: " + (dt_wstr,9)@[nyserawrows] + "\n" + " Amex: " + (dt_wstr,9)@[amexrawrows]
nasdaqrawrows
이 7058, nyserawrows
이 3528, 그리고 amexrawrows
이 1102이면 식은 다음 문자열로 계산됩니다.
처리된 행
NASDAQ: 7058
NYSE: 3528
AMEX: 1102
프로세스 실행 태스크의 Executable 속성용 속성 식
다음의 속성 식은 프로세스 실행 태스크의 Executable 속성 설정에 사용할 수 있습니다. 식은 문자열 리터럴, 연산자 및 함수의 조합을 사용합니다. 식은 DATEPART 및 GETDATE 함수와 조건 연산자를 사용합니다.
DATEPART("weekday", GETDATE()) ==2?"notepad.exe":"mspaint.exe"
주의 두 번째 날이면 프로세스 실행 태스크가 notepad.exe를 실행하고, 그렇지 않으면 태스크는 mspaint.exe을 실행합니다.
플랫 파일 연결 관리자 ConnectionString 속성에 대한 속성 식
다음 속성 식을 사용하여 플랫 파일 연결 관리자의 ConnectionString 속성을 설정할 수 있습니다. 다음 식은 텍스트 파일의 경로를 포함하는 한 개의 사용자 정의 변수 myfilenamefull
을 사용합니다.
@[User::myfilenamefull]
참고 항목
연결 관리자용 속성 식은 속성 창을 통해서만 액세스할 수 있습니다. 연결 관리자의 속성을 보려면 속성 창 열려 있는 경우 SSIS 디자이너의 연결 관리자 영역에서 연결 관리자를 선택하거나 연결 관리자를 마우스 오른쪽 단추로 클릭하고 속성을 선택해야 합니다.
텍스트 파일 로그 공급자의 ConfigString 속성에 대한 속성 식
다음 속성 식을 사용하여 텍스트 파일 로그 공급자의 ConfigString 속성을 설정할 수 있습니다. 식은 사용하는 파일 연결 관리자의 이름을 포함하는 단일 사용자 정의 변수 varConfigString
을 사용합니다. 파일 연결 관리자는 로그 항목이 기록되는 텍스트 파일의 경로를 지정합니다.
@[User::varConfigString]
참고 항목
로그 공급자용 속성 식은 속성 창을 통해서만 액세스할 수 있습니다. 로그 공급자의 속성을 보려면 속성 창 열려 있는 경우 SSIS 디자이너의 패키지 탐색기 탭에서 로그 공급자를 선택하거나 패키지 탐색기에서 로그 공급자를 마우스 오른쪽 단추로 클릭하고 속성을 클릭해야 합니다.
외부 리소스
- 기술 문서, SSIS 식 예제