데이터 흐름 태스크

데이터 흐름 태스크는 원본과 대상 사이에 데이터를 이동하는 데이터 흐름 엔진을 캡슐화하며, 이를 통해 사용자는 데이터 이동 시 데이터를 변환, 정리 및 수정할 수 있습니다. 데이터 흐름 태스크를 패키지에 추가하면 패키지에서 데이터를 추출, 변환 및 로드할 수 있습니다.

데이터 흐름은 적어도 하나 이상의 데이터 흐름 구성 요소로 구성되지만 일반적으로 데이터를 추출하는 원본, 데이터를 수정, 라우팅 또는 요약하는 변환 및 데이터를 로드하는 대상과 같은 일련의 연결된 데이터 흐름 구성 요소로 구성됩니다. 구성 요소는 데이터 흐름에서 경로에 의해 연결됩니다. 각 경로는 경로의 시작과 끝을 나타내는 두 구성 요소를 지정합니다. 자세한 내용은 데이터 흐름 요소을 참조하십시오.

런타임 시 데이터 흐름 태스크는 데이터 흐름으로부터 실행 계획을 작성하고, 이 계획은 데이터 흐름 엔진에 의해 실행됩니다. 데이터 흐름이 없는 데이터 흐름 태스크를 만들 수 있지만 적어도 하나 이상의 데이터 흐름이 있는 경우에만 태스크가 실행됩니다.

다음 다이어그램은 데이터 흐름이 하나 있는 데이터 흐름 태스크를 보여 줍니다.

데이터 흐름

데이터 흐름 태스크에는 여러 데이터 흐름이 포함될 수 있습니다. 태스크에서 여러 데이터가 복사되고, 데이터 복사 순서가 중요하지 않은 경우에는 데이터 흐름 태스크에 여러 데이터 흐름을 포함시키는 것이 편리합니다. 예를 들어 플랫 파일의 데이터를 데이터 웨어하우스의 별모양 스키마에 있는 다른 차원 테이블로 복사하는 5개의 데이터 흐름을 만들 수 있습니다.

하지만 데이터 흐름 엔진은 하나의 데이터 흐름 태스크 내에 여러 데이터 흐름이 있는 경우 실행 순서를 결정합니다. 따라서 순서가 중요한 경우에는 패키지에서 각각 하나의 데이터 흐름이 포함된 여러 데이터 흐름 태스크를 사용해야 합니다. 그런 다음에는 선행 제약 조건을 적용하여 태스크의 실행 순서를 제어할 수 있습니다.

다음 다이어그램에서는 여러 데이터 흐름이 포함된 하나의 데이터 흐름 태스크를 보여 줍니다.

데이터 흐름

패키지에는 여러 데이터 흐름 태스크가 포함될 수 있으며 복잡한 패키지에는 그러한 경우가 많습니다. 예를 들어 패키지에서 데이터 흐름이 지정된 순서로 실행되어야 하거나 데이터 흐름 사이에 다른 태스크가 수행되어야 하는 경우에는 각 데이터 흐름에 대해 별개의 데이터 흐름 태스크를 사용해야 합니다.

데이터 흐름 태스크는 또한 오류 흐름을 관리합니다. 런타임 시 데이터 흐름 구성 요소에서 데이터를 변환하거나, 조회를 수행하거나, 식을 계산할 때 행 수준의 오류가 발생할 수 있습니다. 이에 대한 예로는 문자열 값이 포함된 데이터 열을 정수로 변환할 수 없는 경우나 식에서 0으로 나누기가 발생하는 경우를 들 수 있습니다. 두 작업 모두 오류를 발생시키며, 오류가 포함된 행은 오류 흐름을 사용하여 개별적으로 처리할 수 있습니다. 패키지 데이터 흐름에서 오류 흐름을 사용하는 방법은 데이터 오류 처리를 참조하십시오.

텍스트 파일의 데이터를 SQL Server 데이터베이스에 대량 삽입하려는 경우 데이터 흐름 태스크 및 데이터 흐름 대신 대량 삽입 태스크를 사용할 수 있습니다. 하지만 대량 삽입 태스크에서는 데이터를 변환할 수 없습니다. 자세한 내용은 대량 삽입 태스크를 참조하십시오.

데이터 흐름 요소에 속성 식 사용

원본, 대상 및 변환의 여러 데이터 흐름 구성 요소에서는 해당 속성에 속성 식을 사용할 수 있습니다. 속성 식은 패키지가 로드되면 속성 값을 바꾸는 식입니다. 패키지는 런타임에 업데이트된 속성 값을 사용합니다. 식은 Integration Services 식 구문을 사용하여 작성되며 Integration Services 함수, 연산자, 식별자 및 변수를 포함할 수 있습니다. 자세한 내용은 Integration Services 식 참조, 패키지에서 식 사용패키지에서 속성 식 사용을 참조하십시오.

Business Intelligence Development Studio에서 패키지를 구성하면 속성 식을 지원하는 데이터 흐름 구성 요소의 속성은 해당 속성이 속한 데이터 흐름 태스크에 표시됩니다. 데이터 흐름 구성 요소의 속성 식을 추가, 변경 및 제거하려면 데이터 흐름 태스크를 클릭하고 속성 창이나 태스크 편집기를 사용하여 속성 식을 추가, 변경 또는 삭제합니다. 데이터 흐름 태스크 자체의 속성 식은 속성 창에서 관리합니다.

데이터 흐름에 식을 사용하는 구성 요소가 들어 있으면 이 식도 속성 창에 표시됩니다. 식을 보려면 구성 요소가 속한 데이터 흐름 태스크를 선택합니다. 속성은 항목별이나 사전순으로 볼 수 있습니다. 속성 창에서 항목별 보기를 사용하면 특정 속성에 사용되지 않은 식은 기타 범주에 표시됩니다. 사전순 보기를 사용하면 식은 데이터 흐름 구성 요소의 이름 순서로 표시됩니다.

로그 항목

Integration Services에서는 모든 태스크에서 사용할 수 있는 로그 이벤트 집합을 제공합니다. Integration Services에서는 여러 태스크에서 사용할 수 있는 사용자 지정 로그 항목도 제공합니다. 자세한 내용은 패키지에서 로깅 구현로깅할 메시지 사용자 지정을 참조하십시오. 데이터 흐름 태스크에는 다음 사용자 지정 로그 항목이 포함됩니다.

로그 항목

설명

BufferSizeTuning

데이터 흐름 태스크로 인해 버퍼 크기가 변경되었음을 나타냅니다. 로그 항목은 크기가 변경된 이유를 설명하고 임시 새 버퍼 크기를 나열합니다.

OnPipelinePostEndOfRowset

구성 요소에 ProcessInput 메서드의 마지막 호출로 설정된 해당 행 집합 끝 신호를 제공했음을 나타냅니다. 입력을 처리하는 데이터 흐름의 각 구성 요소에 대한 항목이 기록됩니다. 이 항목은 구성 요소의 이름을 포함합니다.

OnPipelinePostPrimeOutput

구성 요소가 PrimeOutput 메서드에 대한 마지막 호출을 완료했음을 나타냅니다. 데이터 흐름에 따라 여러 로그 항목이 기록될 수 있습니다. 구성 요소가 원본일 경우 이 로그 항목은 구성 요소가 행 처리를 완료했음을 의미합니다.

OnPipelinePreEndOfRowset

구성 요소가 ProcessInput 메서드의 마지막 호출로 설정된 해당 행 집합 끝 신호를 수신하려고 함을 나타냅니다. 입력을 처리하는 데이터 흐름의 각 구성 요소에 대한 항목이 기록됩니다. 이 항목은 구성 요소의 이름을 포함합니다.

OnPipelinePrePrimeOutput

구성 요소가 PrimeOutput 메서드에서 해당 호출을 수신하려고 함을 나타냅니다. 데이터 흐름에 따라 여러 로그 항목이 기록될 수 있습니다.

OnPipelineRowsSent

ProcessInput 메서드 호출로 구성 요소 입력에 제공한 행 수를 보고합니다. 이 로그 항목은 구성 요소 이름을 포함합니다.

PipelineBufferLeak

버퍼 관리자가 없어진 후에 버퍼를 활성 상태로 유지하는 모든 구성 요소에 대한 정보를 제공합니다. 버퍼가 여전히 활성 상태인 경우 버퍼 리소스가 해제되지 않으므로 메모리가 손실될 수 있습니다. 로그 항목은 구성 요소 이름과 버퍼 ID를 제공합니다.

PipelineComponentTime

5개의 주요 처리 단계인 Validate, PreExecute, PostExecute, ProcessInput 및 ProcessOutput 각각에서 구성 요소에 소요된 시간(밀리초)을 보고합니다.

PipelineExecutionPlan

데이터 흐름의 실행 계획을 보고합니다. 실행 계획은 버퍼를 구성 요소로 전송하는 방법에 대한 정보를 제공합니다. 이 정보는 PipelineExecutionTrees 로그 항목과 함께 데이터 흐름 태스크 내에서 발생하는 사항에 대해 설명합니다.

PipelineExecutionTrees

데이터 흐름에서 레이아웃 실행 트리를 보고합니다. 데이터 흐름 엔진 스케줄러에서는 이 트리를 사용하여 데이터 흐름의 실행 계획을 작성합니다.

PipelineInitialization

태스크에 대한 초기화 정보를 제공합니다. 이 정보에 BLOB 데이터의 임시 저장소에 사용할 디렉터리, 기본 버퍼 크기 및 버퍼의 행 수가 포함됩니다. 데이터 흐름 태스크의 구성에 따라 여러 로그 항목이 기록될 수 있습니다.

이러한 로그 항목은 패키지를 실행할 때마다 데이터 흐름 태스크의 실행과 관련된 다양한 정보를 제공합니다. 패키지를 반복적으로 실행할 경우 해당 태스크에서 수행하는 처리, 성능에 영향을 줄 수 있는 문제 및 해당 태스크에서 처리하는 데이터 볼륨에 대한 중요한 기록 정보를 시간별로 제공하는 정보를 캡처할 수 있습니다.

이러한 로그 항목을 사용하여 데이터 흐름의 성능을 모니터링하고 향상시키는 방법은 다음 항목 중 하나를 참조하십시오.

데이터 흐름 태스크의 예제 메시지

다음 표에서는 매우 간단한 패키지의 로그 항목에 대한 예제 메시지를 보여 줍니다. 이 패키지에서는 OLE DB 원본을 사용하여 테이블에서 데이터를 추출하고, 정렬 변환을 사용하여 데이터를 정렬하며, OLE DB 대상을 사용하여 다른 테이블에 데이터를 씁니다.

로그 항목

메시지

BufferSizeTuning

버퍼 유형 0의 행 때문에 버퍼 크기가 구성된 최대값보다 커집니다. 이러한 유형의 버퍼에는 9637개의 행만 있습니다.

버퍼 유형 2의 행 때문에 버퍼 크기가 구성된 최대값보다 커집니다. 이러한 유형의 버퍼에는 9497개의 행만 있습니다.

버퍼 유형 3의 행 때문에 버퍼 크기가 구성된 최대값보다 커집니다. 이러한 유형의 버퍼에는 9497개의 행만 있습니다.

OnPipelinePostEndOfRowset

구성 요소에 행 집합 끝 신호가 제공됩니다. : 1180 : 정렬 : 1181 : 정렬 입력

구성 요소에 행 집합 끝 신호가 제공됩니다. : 1291 : OLE DB 대상 : 1304 : OLE DB 대상 입력

OnPipelinePostPrimeOutput

PrimeOutput 호출에서 구성 요소가 반환되었습니다. : 1180 : 정렬

PrimeOutput 호출에서 구성 요소가 반환되었습니다. : 1 : OLE DB 원본

OnPipelinePreEndOfRowset

구성 요소가 모든 행 처리를 마쳤습니다. : 1180 : 정렬 : 1181 : 정렬 입력

구성 요소가 모든 행 처리를 마쳤습니다. : 1291 : OLE DB 대상 : 1304 : OLE DB 대상 입력

OnPipelinePrePrimeOutput

구성 요소에 PrimeOutput이 호출됩니다. : 1180 : 정렬

구성 요소에 PrimeOutput이 호출됩니다. : 1 : OLE DB 원본

OnPipelineRowsSent

행이 데이터 흐름 구성 요소에 입력으로 제공되었습니다. : : 1185 : OLE DB 원본 출력 : 1180 : Sort : 1181 : 원본 입력 : 76

행이 데이터 흐름 구성 요소에 입력으로 제공되었습니다. : : 1308 : 정렬 출력 : 1291 : OLE DB 대상 : 1304 : OLE DB 대상 입력 : 76

PipelineComponentTime

ProcessInput에서 "Calculate LineItemTotalCost"(3522) 구성 요소에 356밀리초가 소요되었습니다.

ProcessInput에서 "Sum Quantity and LineItemTotalCost"(3619) 구성 요소에 79밀리초가 소요되었습니다.

ProcessInput에서 "Calculate Average Cost"(3662) 구성 요소에 16밀리초가 소요되었습니다.

ProcessInput에서 "Sort by ProductID"(3717) 구성 요소에 125밀리초가 소요되었습니다.

ProcessInput에서 "Load Data"(3773) 구성 요소에 0밀리초가 소요되었습니다.

PrimeOutput에서 "Extract Data"(3869) 구성 요소가 "OLE DB Source Output"(3879) 출력의 버퍼를 채우는 데 688밀리초가 소요되었습니다.

PrimeOutput에서 "Sum Quantity and LineItemTotalCost"(3619) 구성 요소가 "Aggregate Output 1"(3621) 출력의 버퍼를 채우는 데 141밀리초가 소요되었습니다.

PrimeOutput에서 "Sort by ProductID"(3717) 구성 요소가 "Sort Output"(3719) 출력의 버퍼를 채우는 데 16밀리초가 소요되었습니다.

PipelineExecutionPlan

SourceThread0

드라이브: 1

요인: 1180 1291

출력 작업 목록

출력 ID 11에 대한 1 유형의 CreatePrimeBuffer

SetBufferListener: 입력 ID 1181에 대한 "WorkThread0"

출력 ID 12에 대한 3 유형의 CreatePrimeBuffer

"OLE DB Source"(1)의 CallPrimeOutput

출력 작업 종료 목록

SourceThread0 종료

WorkThread0

드라이브: 1180

요인: 1180 1291

입력 작업 목록, 입력 ID 1181(1개 EOR 필요)

뷰 유형 2에 대한 "Sort"(1180)의 입력 ID 1181에 있는 CallProcessInput

입력 1181의 입력 작업 종료 목록

출력 작업 목록

출력 ID 1182에 대한 4 유형의 CreatePrimeBuffer

SetBufferListener: 입력 ID 1304에 대한 "WorkThread1"

"Sort"(1180)의 CallPrimeOutput

출력 작업 종료 목록

WorkThread0 종료

WorkThread1

드라이브: 1291

요인: 1291

입력 작업 목록, 입력 ID 1304(1개 EOR 필요)

뷰 유형 5에 대한 "OLE DB Destination"(1291)의 입력 ID 1304에 있는 CallProcessInput

입력 1304의 입력 작업 종료 목록

출력 작업 목록

출력 작업 종료 목록

WorkThread1 종료

PipelineExecutionTrees

실행 트리 시작 0

"OLE DB 원본 출력" 출력(11)

"정렬 입력" 입력(1181)

실행 트리 종료 0

실행 트리 시작 1

"OLE DB 원본 오류 출력" 출력(12)

실행 트리 종료 1

실행 트리 시작 2

"정렬 출력" 출력(1182)

"OLE DB 대상 입력" 입력(1304)

"OLE DB 대상 오류 출력" 출력(1305)

실행 트리 종료 2

PipelineInitialization

임시 BLOB 데이터 저장소 위치가 제공되지 않았습니다. 버퍼 관리자가 TEMP 및 TMP 환경 변수에 있는 디렉터리를 사용하게 됩니다.

기본 버퍼 크기는 10485760바이트입니다.

기본적으로 버퍼에는 10000개의 행이 있습니다.

RunInOptimizedMode 속성이 false로 설정되어 있기 때문에 데이터 흐름이 사용되지 않은 구성 요소를 제거하지 않습니다.

로그 이벤트는 대부분 여러 개의 항목을 기록하며 다양한 로그 항목의 메시지에는 복잡한 데이터가 들어 있습니다. 복잡한 메시지 내용을 보다 쉽게 이해하고 전달할 수 있도록 메시지 텍스트를 구문 분석할 수 있습니다. 로그의 위치에 따라 Transact-SQL 문이나 스크립트 구성 요소를 사용하여 복잡한 텍스트를 열이나 보다 유용한 그 밖의 형식으로 구분할 수 있습니다.

예를 들어 다음 표에서는 "행이 데이터 흐름 구성 요소에 입력으로 제공되었습니다. : : 1185 : OLE DB 원본 출력 : 1180 : Sort : 1181 : 정렬 입력 : 76"이라는 메시지가 여러 개의 열로 구문 분석된 결과를 보여 줍니다. 이 메시지는 OLE DB 원본의 행이 정렬 변환으로 보내질 때 OnPipelineRowsSent 이벤트에 의해 기록된 것입니다.

설명

PathID

OLE DB 원본과 정렬 변환 사이의 경로에 대한 ID 속성 값입니다.

1185

PathName

경로의 Name 속성 값입니다.

OLE DB 원본 출력

ComponentID

정렬 변환의 ID 속성 값입니다.

1180

ComponentName

정렬 변환의 Name 속성 값입니다.

Sort

InputID

정렬 변환에 대한 입력의 ID 속성 값입니다.

1181

InputName

정렬 변환에 대한 입력의 Name 속성 값입니다.

정렬 입력

RowsSent

정렬 변환의 입력으로 보내지는 행 수입니다.

76

원본

다음 원본에는 속성 식을 통해 업데이트할 수 있는 속성이 있습니다.

자세한 내용은 원본 사용자 지정 속성을 참조하십시오.

변환

대상

다음 대상에는 속성 식을 통해 업데이트할 수 있는 속성이 있습니다.

자세한 내용은 대상 사용자 지정 속성을 참조하십시오.

데이터 흐름 태스크 구성

속성 창을 사용하거나 프로그래밍 방식으로 속성을 설정할 수 있습니다.

속성 창에서 이러한 속성을 설정하는 방법을 보려면 다음 항목을 클릭하십시오.

데이터 흐름 태스크를 프로그래밍 방식으로 구성

패키지에 데이터 흐름 태스크를 프로그래밍 방식으로 추가하고 데이터 흐름 속성을 설정하는 방법을 보려면 다음 항목을 클릭하십시오.

Integration Services 아이콘(작은 아이콘) Integration Services 관련 최신 정보 얻기

Microsoft의 최신 다운로드, 아티클, 예제 및 비디오와 커뮤니티의 정선된 솔루션을 보려면 MSDN 또는 TechNet의 Integration Services 페이지를 방문하십시오.

이러한 업데이트에 대한 자동 알림을 받으려면 해당 페이지에서 제공하는 RSS 피드를 구독하십시오.