사용자 지정 데이터 흐름 구성 요소 만들기Creating a Custom Data Flow Component

MicrosoftMicrosoft SQL ServerSQL Server Integration ServicesIntegration Services에서 데이터 흐름 태스크는 개발자가 MicrosoftMicrosoft .NET Framework.NET Framework와 관리 코드를 사용하여 사용자 지정 데이터 흐름의 원본, 변환 및 대상 구성 요소를 만들 수 있게 해 주는 개체 모델을 제공합니다.In MicrosoftMicrosoft SQL ServerSQL Server Integration ServicesIntegration Services, the data flow task exposes an object model that lets developers create custom data flow components—sources, transformations, and destinations—by using the MicrosoftMicrosoft .NET Framework.NET Framework and managed code.

데이터 흐름 태스크는 IDTSComponentMetaData100 인터페이스를 포함하는 구성 요소와 구성 요소 간의 데이터 이동을 정의하는 IDTSPath100 개체의 컬렉션으로 구성됩니다.A data flow task consists of components that contain an IDTSComponentMetaData100 interface and a collection of IDTSPath100 objects that define the movement of data between components.

참고

사용자 지정 공급자를 만들 경우 ProviderDescriptors.xml 파일을 메타데이터 열 값으로 업데이트해야 합니다.When you create a custom provider, you need to update the ProviderDescriptors.xml file with the metadata column values.

디자인 타임 및 런타임Design Time and Run Time

실행 전 데이터 흐름 태스크에서 증분 변경 작업이 수행될 때 해당 데이터 흐름 태스크는 디자인 타임 상태에 있다고 합니다.Before execution, the data flow task is said to be in a design-time state, as it undergoes incremental changes. 변경 작업에는 구성 요소의 추가 또는 제거, 구성 요소를 연결하는 경로 개체의 추가 또는 제거, 구성 요소의 메타데이터 변경 등이 포함됩니다.Changes may include the addition or removal of components, the addition or removal of the path objects that connect components, and changes to the metadata of the components. 메타데이터가 변경되면 구성 요소에서는 변경 내용을 모니터링하고 그에 따라 반응할 수 있습니다.When metadata changes occur, the component can monitor and react to the changes. 예를 들어 변경에 대한 응답으로 구성 요소에서는 특정 변경 작업을 허용하지 않거나 추가 변경 작업을 수행할 수 있습니다.For example, a component can disallow certain changes or to make additional changes in response to a change. 디자인 타임에 디자이너는 디자인 타임 IDTSDesigntimeComponent100 인터페이스를 통해 구성 요소와 상호 작용합니다.At design time, the designer interacts with a component through the design-time IDTSDesigntimeComponent100 interface.

실행 시 데이터 흐름 태스크에서는 구성 요소의 시퀀스를 검사하고, 실행 계획을 준비하고, 작업 계획을 실행하는 작업자 스레드의 풀을 관리합니다.At execution time, the data flow task examines the sequence of components, prepares an execution plan, and manages a pool of worker threads that execute the work plan. 각 작업자 스레드는 데이터 흐름 태스크 내부의 일부 작업을 수행하지만 작업자 스레드의 주요 태스크는 런타임 IDTSRuntimeComponent100 인터페이스를 통해 구성 요소의 메서드를 호출하는 것입니다.Although each worker thread performs some work that is internal to the data flow task, the principal task of the worker thread is to call the methods of the component through the run-time IDTSRuntimeComponent100 interface.

구성 요소 만들기Creating a Component

데이터 흐름 구성 요소를 만들려면 PipelineComponent 기본 클래스에서 클래스를 파생시키고 DtsPipelineComponentAttribute 클래스를 적용한 다음 기본 클래스의 적절한 메서드를 재정의합니다.To create a data flow component, you derive a class from the PipelineComponent base class, apply the DtsPipelineComponentAttribute class, and then override the appropriate methods of the base class. PipelineComponentIDTSDesigntimeComponent100IDTSRuntimeComponent100 인터페이스를 구현하고 구성 요소에서 재정의할 수 있는 메서드를 제공합니다.The PipelineComponent implements the IDTSDesigntimeComponent100 and IDTSRuntimeComponent100 interfaces, and exposes their methods for you to override in your component.

프로젝트에는 구성 요소에서 사용되는 개체에 따라 다음 어셈블리 중 일부 또는 모두에 대한 참조가 필요합니다.Depending on the objects used by your component, your project will require references to some or all of the following assemblies:

기능Feature 참조할 어셈블리Assembly to reference 가져올 네임스페이스Namespace to import
데이터 흐름Data flow Microsoft.SqlServer.PipelineHostMicrosoft.SqlServer.PipelineHost Microsoft.SqlServer.Dts.Pipeline
데이터 흐름 래퍼Data flow wrapper Microsoft.SqlServer.DTSPipelineWrapMicrosoft.SqlServer.DTSPipelineWrap Microsoft.SqlServer.Dts.Pipeline.Wrapper
런타임Runtime Microsoft.SQLServer.ManagedDTSMicrosoft.SQLServer.ManagedDTS Microsoft.SqlServer.Dts.Runtime
런타임 래퍼Runtime wrapper Microsoft.SqlServer.DTSRuntimeWrapMicrosoft.SqlServer.DTSRuntimeWrap Microsoft.SqlServer.Dts.Runtime.Wrapper

다음 코드 예에서는 기본 클래스에서 파생되는 간단한 구성 요소를 보여 주고 DtsPipelineComponentAttribute를 적용합니다.The following code example shows a simple component that derives from the base class, and applies the DtsPipelineComponentAttribute. Microsoft.SqlServer.DTSPipelineWrap 어셈블리에 대한 참조를 추가해야 합니다.You need to add a reference to the Microsoft.SqlServer.DTSPipelineWrap assembly.

using System;  
using Microsoft.SqlServer.Dts.Pipeline;  
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;  

namespace Microsoft.Samples.SqlServer.Dts  
{  
    [DtsPipelineComponent(DisplayName = "SampleComponent", ComponentType = ComponentType.Transform )]  
    public class BasicComponent: PipelineComponent  
    {  
        // TODO: Override the base class methods.  
    }  
}  
Imports Microsoft.SqlServer.Dts.Pipeline  
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper  

<DtsPipelineComponent(DisplayName:="SampleComponent", ComponentType:=ComponentType.Transform)> _  
Public Class BasicComponent  

    Inherits PipelineComponent  

    ' TODO: Override the base class methods.  

End Class  

관련 항목:See Also

데이터 흐름 구성 요소의 사용자 인터페이스 개발Developing a User Interface for a Data Flow Component