패키지에서 속성 식 사용

적용 대상: 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 루프에서 사용하는 속성 식의 목록을 볼 수 있습니다.

  • 속성 창을 사용하여 식을 편집하고 패키지 또는 패키지 개체가 사용하는 속성 식의 목록을 볼 수 있습니다.

  • 속성 식을 만들고, 업데이트하고, 삭제하기 위한 속성 식 편집기 대화 상자입니다.

  • 식 작성기 대화 상자의 그래픽 도구를 사용하여 식을 작성할 수 있습니다. 식 작성기 대화 상자에서는 검토를 위해 계산 결과를 속성에 할당하지 않고 식을 계산할 수 있습니다.

다음 다이어그램에서는 속성 식을 추가, 변경 및 제거하는 데 사용하는 사용자 인터페이스를 보여 줍니다.

The user interface for property expressions

속성 창 및 식 페이지에서 Expressions 컬렉션 수준에서 찾아보기 단추(...)를 클릭하여 속성 식 편집기 대화 상자를 엽니다. 속성 식 편집기를 사용하여 속성을 식에 매핑하거나 속성 식을 입력할 수 있습니다. 그래픽 식 도구를 사용하여 식을 만들고 유효성을 검사하려면 식 수준에서 찾아보기 단추(...)를 클릭하여 식 작성기 대화 상자를 연 다음 식의 유효성을 검사하거나 수정하고 선택적으로 유효성을 검사합니다.

속성 식 편집대화 상자에서 식 작성기 대화 상자를 열 수도 있습니다.

속성 식을 사용하여 작업하려면

데이터 흐름 구성 요소의 속성 식 설정

SSDT(SQL Server Data Tools)에서 패키지를 생성하는 경우 속성 식을 지원하는 데이터 흐름 구성 요소의 속성이 속한 데이터 흐름 태스크에 노출됩니다. 데이터 흐름 구성 요소의 속성 식을 추가, 변경 및 제거하려면 데이터 흐름 구성 요소가 속한 데이터 흐름의 데이터 흐름 태스크를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다. 속성 창 속성 식을 사용할 수 있는 데이터 흐름 구성 요소의 속성을 나열합니다. 예를 들어 SampleCustomer라는 데이터 흐름에서 행 샘플링 변환의 SamplingValue 속성에 대한 속성 식을 만들거나 수정하려면 행 샘플링 변환이 속한 데이터 흐름의 데이터 흐름 태스크를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다. SamplingValue 속성은 속성 창 나열되며 형식이 [SampleCustomer]입니다.[ SamplingValue].

속성 창 다른 Integration Services 개체 형식에 대한 속성 식과 동일한 방식으로 데이터 흐름 구성 요소에 대한 속성 식을 추가, 변경 및 제거합니다. 속성 창 데이터 흐름 구성 요소에 대한 속성 식을 추가, 변경 또는 제거하는 데 사용하는 다양한 대화 상자 및 작성기에도 액세스할 수 있습니다. 속성 식으로 업데이트할 수 있는 데이터 흐름 구성 요소의 속성에 대한 자세한 내용은 변환 사용자 지정 속성을 참조 하세요.

속성 식 로드

속성 식이 로드되는 시기를 지정하거나 제어할 수 없습니다. 패키지 및 패키지 개체의 유효성을 검사할 때 속성 식이 평가되고 로드됩니다. 패키지를 저장하고, SSIS 디자이너에서 패키지를 열고, 패키지를 실행할 때 유효성 검사가 수행됩니다.

따라서 패키지를 저장하거나, 패키지를 실행하거나, 속성 식을 추가한 후 패키지를 다시 열 때까지 SSIS 디자이너에서 속성 식을 사용하는 패키지 개체의 속성 값이 업데이트되지 않습니다.

개체 연결 관리자, 로그 공급자 및 열거자의 다양한 형식과 연결된 속성 식은 해당 개체 형식과 관련된 메서드가 호출될 때 로드됩니다. 예를 들어 Integration Services에서 연결 인스턴스를 만들기 전에 연결 관리자의 속성이 로드됩니다.

속성 식은 패키지 구성이 로드된 후에 로드됩니다. 예를 들어 변수는 먼저 해당 구성에 의해 업데이트된 다음 변수를 사용하는 속성 식이 평가되고 로드됩니다. 즉, 속성 식은 항상 구성에 의해 설정된 변수 값을 사용합니다.

참고 항목

dtexec 유틸리티의 Set 옵션을 사용하여 속성 식을 채울 수 없습니다.

다음 표에는 Integration Services의 속성 식이 평가되고 로드되는 시기가 요약되어 있습니다.

Object type 로드 및 평가
패키지, Foreach 루프, For 루프, 시퀀스, 작업 및 데이터 흐름 구성 요소 구성을 로드한 후

유효성 검사 전

실행 전에 발생합니다.
연결 관리자 구성을 로드한 후

유효성 검사 전

실행 전에 발생합니다.

연결 인스턴스 만들기 전
로그 공급자 구성을 로드한 후

유효성 검사 전

실행 전에 발생합니다.

로그를 열기 전에
Foreach 열거자 구성을 로드한 후

유효성 검사 전

실행 전에 발생합니다.

루프의 각 열거 전

Foreach 루프에서 속성 식 사용

Foreach 루프 컨테이너 내에서 사용되는 연결 관리자의 커넥트ionString 속성 값을 설정하는 속성 식을 구현하는 것이 유용한 경우가 많습니다. 열거자가 현재 값을 루프의 각 반복에 대한 변수에 매핑한 후 속성 식은 이 변수의 값을 사용하여 커넥트ionString 속성의 값을 동적으로 업데이트할 수 있습니다.

Foreach 루프에서 사용하는 파일, 다중 파일, 플랫 파일 및 다중 플랫 파일 연결 관리자의 커넥트ionString 속성과 함께 속성 식을 사용하려면 몇 가지 사항을 고려해야 합니다. MaxConcurrentExecutables 속성을 1보다 큰 값 또는 -1 값으로 설정하여 여러 실행 파일을 동시에 실행하도록 패키지를 구성할 수 있습니다. 값이 -1이면 동시에 실행 중인 실행 파일의 최대 수가 프로세서 수와 2개와 같을 수 있습니다. 실행 파일 의 병렬 실행으로 인한 부정적인 결과를 방지하려면 MaxConcurrentExecutable 값을 1로 설정해야 합니다. MaxConcurrentExecutables가 1로 설정되지 않은 경우 커넥트ionString 속성의 값을 보장할 수 없으며 결과를 예측할 수 없습니다.

예를 들어 폴더의 파일을 열거하고 파일 이름을 검색한 다음 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 함수의 조합을 사용할 수 있습니다. 시스템 변수로는 PackageNameStartTime 변수가 있습니다.

"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< a0/ nyserawrows>입니다 amexrawrows. 문자열 "\n"은 캐리지 리턴을 나타냅니다.

"Rows Processed: " + "\n" +" NASDAQ: " + (dt_wstr,9)@[nasdaqrawrows] + "\n" + " NYSE: " + (dt_wstr,9)@[nyserawrows] + "\n" + " Amex: " + (dt_wstr,9)@[amexrawrows]

7058 nyserawrows 이고 3528이고 amexrawrows 1102이면 nasdaqrawrows 식이 다음 문자열로 계산됩니다.

처리된 행:

나스닥: 7058

뉴욕증권거래소: 3528

AMEX: 1102

프로세스 실행 태스크의 Executable 속성용 속성 식

다음 속성 식을 사용하여 프로세스 실행 태스크의 실행 가능 속성을 설정할 수 있습니다. 식은 문자열 리터럴, 연산자 및 함수의 조합을 사용합니다. 식은 DATEPART 및 GETDATE 함수와 조건부 연산자를 사용합니다.

DATEPART("weekday", GETDATE()) ==2?"notepad.exe":"mspaint.exe"

주 2일이면 프로세스 실행 태스크가 notepad.exe 실행되고, 그렇지 않으면 작업이 mspaint.exe 실행됩니다.

플랫 파일 연결 관리자 커넥트ionString 속성에 대한 속성 식

다음 속성 식을 사용하여 플랫 파일 연결 관리자의 커넥트ionString 속성을 설정할 수 있습니다. 다음 식은 텍스트 파일의 경로를 포함하는 한 개의 사용자 정의 변수 myfilenamefull을 사용합니다.

@[User::myfilenamefull]

참고 항목

연결 관리자에 대한 속성 식은 속성 창 사용해야만 액세스할 수 있습니다. 연결 관리자의 속성을 보려면 속성 창 열려 있는 경우 SSIS 디자이너의 연결 관리자 영역에서 연결 관리자를 선택하거나 연결 관리자를 마우스 오른쪽 단추로 클릭하고 속성을 선택해야 합니다.

텍스트 파일 로그 공급자의 ConfigString 속성에 대한 속성 식

다음 속성 식을 사용하여 텍스트 파일 로그 공급자의 ConfigString 속성을 설정할 수 있습니다. 식은 사용할 파일 연결 관리자의 이름을 포함하는 단일 사용자 정의 변수 varConfigString를 사용합니다. 파일 연결 관리자는 로그 항목이 기록되는 텍스트 파일의 경로를 지정합니다.

@[User::varConfigString]

참고 항목

로그 공급자용 속성 식은 속성 창을 통해서만 액세스할 수 있습니다. 로그 공급자의 속성을 보려면 속성 창 열려 있는 경우 SSIS 디자이너의 패키지 탐색기 탭에서 로그 공급자를 선택하거나 패키지 탐색기에서 로그 공급자를 마우스 오른쪽 단추로 클릭하고 속성을 클릭해야 합니다.

외부 리소스

참고 항목

패키지에서 변수 사용