次の方法で共有


Integration Services 用のカスタム オブジェクトの開発

適用対象: SQL Server Azure Data Factory の SSIS 統合ランタイム

SQL Server Integration Services に含まれる制御フロー オブジェクトおよびデータ フロー オブジェクトが、求める条件を満たしていない場合は、次のようなさまざまな種類のカスタム オブジェクトを独自に開発できます。

  • カスタム タスク

  • カスタム接続マネージャー。 現在サポートされていない外部データ ソースに接続します。

  • カスタム ログ プロバイダー。 現在サポートされていない形式でパッケージ イベントのログを記録します。

  • カスタム列挙子。 現在サポートされていないオブジェクト形式または値形式のセットを繰り返し処理できるようにします。

  • カスタム データ フロー コンポーネント。 変換元、変換、変換先のいずれかとして構成できます。

Integration Services オブジェクト モデルにはこのカスタム開発を容易にする複数の基本クラスがあります。これらの基本クラスによって、カスタム実装に対し、一貫した信頼性の高いフレームワークが提供されます。

カスタム機能を複数のパッケージで再利用する必要がない場合には、スクリプト タスクおよびスクリプト コンポーネントを使用すると、マネージド プログラミング言語を最大限に活用でき、記述するインフラストラクチャ コードが大幅に削減されます。 詳細については、「スクリプティング ソリューションとカスタム オブジェクトとの比較」を参照してください。

Integration Services 用カスタム オブジェクトの開発手順

Integration Services で使用するカスタム オブジェクトを開発する際には、クラス ライブラリ (DLL) を開発します。このクラス ライブラリは、デザイン時に SSIS デザイナーによって、また実行時に Integration Services ランタイムによって、それぞれ読み込まれます。 実装の必要がある最も重要なメソッドは、独自のコードから呼び出すメソッドではなく、ランタイムによって適切な時点で呼び出され、コンポーネントの初期化および検証や、機能の呼び出しを行うメソッドです。

次に、カスタム オブジェクトの開発手順を示します。

  1. 種類がクラス ライブラリの新規プロジェクトを、任意のマネージド プログラミング言語で作成します。

  2. 次の表に示す、適切な基本クラスを継承します。

  3. 次の表に示す、適切な属性を新しいクラスに適用します。

  4. 必要に応じて基本クラスのメソッドをオーバーライドし、オブジェクトのカスタム機能のコードを記述します。

  5. 必要に応じて、コンポーネント用のカスタム ユーザー インターフェイスを構築します。 配置を容易にするため、同一ソリューション内の別個のプロジェクトとしてユーザー インターフェイスを開発し、別個のアセンブリとしてビルドすることもできます。

  6. 必要に応じて、カスタム オブジェクトのサンプルおよびヘルプ コンテンツへのリンクを SSIS ツールボックス内に表示します。

  7. カスタム オブジェクトのビルド、配置、およびデバッグ」の説明に従って、新しいカスタム オブジェクトのビルド、配置、およびデバッグを行います。

基本クラス、属性、および重要なメソッド

この表では、開発可能な各種カスタム オブジェクトに対する、Integration Services オブジェクト モデルの最も重要な要素を簡単に参照できます。

カスタム オブジェクト 基底クラス 属性 重要なメソッド
タスク Task DtsTaskAttribute Execute
[ODBC 入力元エディター] ConnectionManagerBase DtsConnectionAttribute $
ログ プロバイダー LogProviderBase DtsLogProviderAttribute
列挙子 ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
カスタム データ フロー コンポーネント PipelineComponent DtsPipelineComponentAttribute

マネージド コードで記述されたカスタム オブジェクトのサンプルおよびヘルプ コンテンツへのリンクを SSIS ツールボックスに表示するには、次のプロパティを使用します。

ネイティブ コードで記述されたカスタム オブジェクトのサンプルおよびヘルプ コンテンツへのリンクを表示するには、レジストリ スクリプト (.rgs) ファイルに SamplesTag、HelpKeyword、および HelpCollection のエントリを追加します。 以下に例を示します。

val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'

val SamplesTag = s 'ExecutePackageTask'

カスタム ユーザー インターフェイスの提供

カスタム オブジェクトのプロパティをユーザーが構成できるようにするには、カスタム ユーザー インターフェイスの開発も必要になる場合があります。 カスタム ユーザー インターフェイスが特に必要ない場合も、既定のエディターよりもユーザー フレンドリなカスタム ユーザー インターフェイスを作成できます。

1 つのカスタム ユーザー インターフェイス プロジェクトまたはアセンブリには、通常 2 つのクラスがあります。特定の種類のカスタム オブジェクトのユーザー インターフェイスに対して Integration Services インターフェイスを実装するクラスと、このクラスによって表示される、ユーザーから情報を収集するための Windows フォームです。 実装するインターフェイスに含まれるメソッドは少数であるため、カスタム ユーザー インターフェイスの開発は難しくありません。

Note

多くの Integration Services ログ プロバイダーには、カスタム ユーザー インターフェイスがあります。カスタム ユーザー インターフェイスには IDtsLogProviderUI が実装され、 [構成] テキスト ボックスが、使用可能な接続マネージャーがフィルター選択されたドロップダウン リストに置き換えられます。 ただし、カスタム ログ プロバイダーのカスタム ユーザー インターフェイスは、このリリースの Integration Services では実装されていません。 そのため、UITypeNameDtsLogProviderAttribute プロパティに値を指定しても、影響がありません。

次の表では、各種カスタム オブジェクトに対するカスタム ユーザー インターフェイスの開発時に実装が必要なインターフェイスを、簡単に参照できます。 また、オブジェクトに対するカスタム ユーザー インターフェイスを開発しなかった場合や、オブジェクトの属性の UITypeName プロパティを使用して、オブジェクトをそのユーザー インターフェイスにリンクできなかった場合に、ユーザーに対してどのように表示されるのかについても説明します。 データ フロー コンポーネントにとっては強力な詳細エディターで十分な場合もありますが、タスクや接続マネージャーにとっては [プロパティ] ウィンドウは比較的わかりにくいソリューションであり、カスタム ForEach 列挙子はカスタム フォームなしでは構成不可能です。

カスタム オブジェクト ユーザー インターフェイス用の基本クラス カスタム ユーザー インターフェイスを指定しなかった場合の既定の編集動作
タスク IDtsTaskUI [プロパティ] ウィンドウのみ。
[ODBC 入力元エディター] IDtsConnectionManagerUI [プロパティ] ウィンドウのみ。
ログ プロバイダー IDtsLogProviderUI

(Integration Services では未実装)
[構成] 列のテキスト ボックス
列挙子 ForEachEnumeratorUI プロパティ ウィンドウのみ。 エディターの列挙子構成領域は空です。
カスタム データ フロー コンポーネント IDtsComponentUI [詳細エディター]

外部リソース

参照

カスタム オブジェクトの永続化
カスタム オブジェクトのビルド、配置、デバッグ