スクリプト タスクとスクリプト コンポーネントの比較
Integration Services デザイナの [制御フロー] ウィンドウで使用できるスクリプト タスクと、[データ フロー] ウィンドウで使用できるスクリプト コンポーネントは、Integration Services パッケージ内での目的がまったく異なります。スクリプト タスクが汎用の制御フロー ツールであるのに対し、スクリプト コンポーネントはデータ フロー内で変換元、変換、または変換先としての役割を果たします。ただし、目的は異なっても、コード作成に使用するツールや、開発者が使用できるパッケージ内のオブジェクトについては、スクリプト タスクとスクリプト コンポーネントには似通った点があります。共通点と相違点を理解すると、このタスクとコンポーネントをより効率的に使用するために役立ちます。
スクリプト タスクとスクリプト コンポーネントの共通点
スクリプト タスクとスクリプト コンポーネントには、次のような共通の機能があります。
機能 | 説明 |
---|---|
デザイン時の 2 つのモード |
タスクとコンポーネントのどちらの場合も、最初にエディタでプロパティを指定し、次に開発環境に切り替えてコードを記述します。 |
Visual Studio for Applications (VSA) のコード開発環境 |
タスクとコンポーネントのどちらも、同じ VSA IDE や Visual Basic .NET プログラミング言語を使用します。 |
スクリプトを事前コンパイル可能 |
タスクとコンポーネントのどちらにも、スクリプトをバイナリ コードに事前コンパイルすることを指定するブール値のプロパティがあります。既定値は常に True です。事前コンパイルすれば実行速度が向上しますが、パッケージ サイズは増加します。 |
スクリプト タスクとスクリプト コンポーネントの相違点
スクリプト タスクとスクリプト コンポーネントには、次のような顕著な相違点があります。
機能 | スクリプト タスク | スクリプト コンポーネント |
---|---|---|
制御フローとデータ フロー |
スクリプト タスクはデザイナの [制御フロー] タブで設定され、パッケージのデータ フローの外で実行されます。 |
スクリプト コンポーネントはデザイナの [データ フロー] ページで設定され、データ フロー タスク内で変換元、変換、または変換先のいずれかを表します。 |
目的 |
スクリプト タスクはほとんどの汎用タスクを実行できます。 |
スクリプト コンポーネントでは、変換元、変換、または変換先のどれを作成するかを指定する必要があります。 |
実行されるタイミング |
スクリプト タスクは、パッケージ ワークフロー内のある時点でカスタム コードを実行します。ループ コンテナまたはイベント ハンドラ内に配置しない限り、実行されるのは 1 回のみです。 |
スクリプト コンポーネントも実行されるのは 1 回のみですが、通常、メイン処理ルーチンはデータ フロー内のデータ行ごとに 1 回ずつ実行されます。 |
エディタ |
[スクリプト タスク エディタ] には、[全般]、[スクリプト]、[式] の 3 つのページがあります。ReadOnlyVariables プロパティおよび ReadWriteVariables プロパティのみが、ユーザーが記述できるコードに直接影響を与えます。 |
[スクリプト変換エディタ] には、[入力列]、[入力および出力]、[スクリプト]、[接続マネージャ] の、最大 4 つのページがあります。この各ページで設定するメタデータやプロパティにより、コードを記述する際に使用できる、自動生成された基本クラスのメンバが指定されます。 |
パッケージの操作 |
スクリプト タスクのコードでは、グローバル オブジェクトである Dts を使用して、パッケージのその他の機能にアクセスします。 |
スクリプト コンポーネントのコードでは、型指定されたアクセサ プロパティを使用して、変数や接続マネージャなど、特定のパッケージ機能にアクセスします。 |
変数の使用 |
スクリプト タスクでは、Dts オブジェクトの Variables プロパティを使用して、タスクの ReadOnlyVariables プロパティおよび ReadWriteVariables プロパティで使用できる変数にアクセスします。例 :
|
スクリプト コンポーネントでは、自動生成された基本クラスの型指定されたアクセサ プロパティを使用します。このプロパティは、コンポーネントの ReadOnlyVariables プロパティおよび ReadWriteVariables プロパティから作成されます。例 :
|
接続の使用 |
スクリプト タスクでは、Dts オブジェクトの Connections プロパティを使用して、パッケージで定義された接続マネージャにアクセスします。例 :
|
スクリプト コンポーネントでは、自動生成された基本クラスの型指定されたアクセサ プロパティを使用します。このプロパティは、エディタの [接続マネージャ] ページでユーザーが入力した、接続マネージャの一覧から作成されます。例 :
|
イベントの発生 |
スクリプト タスクでは、Dts オブジェクトの Events プロパティを使用してイベントを発生させます。例 :
|
スクリプト コンポーネントでエラー、警告、情報メッセージを発生させるには、ComponentMetaData プロパティから返される IDTSComponentMetaData90 インターフェイスのメソッドを使用します。例 :
|
ログ記録 |
スクリプト タスクでは、 Dts オブジェクトの Log メソッドを使用して、有効なログ プロバイダに情報を記録します。例 :
|
スクリプト コンポーネントでは、自動生成された基本クラスの Log メソッドを使用して、有効なログ プロバイダに情報を記録します。例 :
|
結果の返送 |
スクリプト タスクでは、 Dts オブジェクトの TaskResult プロパティ、および場合によって ExecutionValue プロパティを使用して、ランタイムに結果を通知します。 |
スクリプト コンポーネントはデータ フロー タスクの一部として実行され、プロパティを使用して結果をレポートすることはありません。 |
デバッグ |
スクリプト タスクでは、設計環境におけるコードのデバッグ時に、ブレークポイントを使用したステップ実行がサポートされます。 |
スクリプト コンポーネントでは、デバッグはサポートされていません。詳細については、「スクリプト コンポーネントのコーディングおよびデバッグ」の「スクリプト コンポーネントのデバッグ」を参照してください。 |