カスタム データ フロー コンポーネントの作成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. PipelineComponent には IDTSDesigntimeComponent100 および IDTSRuntimeComponent100 インターフェイスが実装され、それらのメソッドが公開されているので、ユーザーのコンポーネント内でオーバーライドできます。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