カスタム データ フロー コンポーネントの作成
MicrosoftSQL ServerIntegration Services のデータ フロー タスクは、開発者が Microsoft.NET Framework およびマネージ コードを使用して変換元、変換、および変換先のカスタム データ フロー コンポーネントを作成するためのオブジェクト モデルを公開します。
データ フロー タスクは、IDTSComponentMetaData100 インターフェイスを含むコンポーネントと、コンポーネント間のデータの移動を定義する IDTSPath100 オブジェクトのコレクションで構成されています。
デザイン時および実行時
実行前のデータ フロー タスクは、増分的に変更が行われるため、デザイン時の状態にあると言えます。追加される変更には、コンポーネントの追加または削除、コンポーネントを接続するパス オブジェクトの追加または削除、およびコンポーネントのメタデータに対する変更などが含まれます。メタデータの変更が発生すると、コンポーネントはその変更を監視して対処できます。たとえば、コンポーネントは特定の変更を禁止したり、ある変更に応じてさらに変更を加えたりすることができます。デザイン時に、設計者はデザイン時インターフェイス IDTSDesigntimeComponent100 を介して、コンポーネントとやり取りします。
データ フロー タスクは、実行時に、コンポーネントの順序の確認、実行プランの準備、および作業プランを実行するワーカー スレッドのプールの管理を行います。各ワーカー スレッドはデータ フロー タスク内の一部の処理を実行しますが、ワーカー スレッドの主なタスクは、実行時インターフェイス IDTSRuntimeComponent100 を介してコンポーネントのメソッドを呼び出すことです。
コンポーネントの作成
データ フロー コンポーネントを作成するには、PipelineComponent 基本クラスからクラスを派生し、DtsPipelineComponentAttribute クラスを適用して、基本クラスの適切なメソッドをオーバーライドします。PipelineComponent には IDTSDesigntimeComponent100 および IDTSRuntimeComponent100 インターフェイスが実装され、それらのメソッドが公開されているので、ユーザーのコンポーネント内でオーバーライドできます。
コンポーネントで使用するオブジェクトによっては、次のアセンブリの一部またはすべてに対する参照がプロジェクトに必要です。
機能 |
参照するアセンブリ |
インポートする名前空間 |
---|---|---|
データ フロー |
Microsoft.SqlServer.PipelineHost |
|
データ フロー ラッパー |
Microsoft.SqlServer.DTSPipelineWrap |
|
ランタイム |
Microsoft.SQLServer.ManagedDTS |
|
ランタイム ラッパー |
Microsoft.SqlServer.DTSRuntimeWrap |
次のコード例では、基本クラスから派生し、DtsPipelineComponentAttribute を適用する簡単なコンポーネントを示します。
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
|