スクリプト タスクとスクリプト コンポーネントの比較

スクリプト タスクは Integration Services デザイナの [制御フロー] ウィンドウで使用でき、スクリプト コンポーネントは [データ フロー] ウィンドウで使用できます。これら 2 つのタスクは、Integration Services パッケージ内での目的がまったく異なります。タスクは汎用の制御フロー ツールであるのに対し、コンポーネントはデータ フロー内で変換元、変換、または変換先としての役割を果たします。ただし、目的は異なっても、コード作成に使用するツールや、開発者が使用できるパッケージ内のオブジェクトについては、スクリプト タスクとスクリプト コンポーネントには似通った点があります。共通点と相違点を理解すると、このタスクとコンポーネントをより効率的に使用するために役立ちます。

スクリプト タスクとスクリプト コンポーネントの共通点

スクリプト タスクとスクリプト コンポーネントには、次のような共通の機能があります。

機能

説明

デザイン時の 2 つのモード

タスクとコンポーネントのどちらの場合も、最初にエディタでプロパティを指定し、次に開発環境に切り替えてコードを記述します。

MicrosoftVisual Studio Tools for Applications (VSTA)

タスクもコンポーネントも、同じ VSTA IDE を使用し、MicrosoftVisual Basic 2008 または MicrosoftVisual C# 2008 で記述されたコードをサポートします。

スクリプトの事前コンパイル

SQL Server 2008 Integration Services (SSIS) では、すべてのスクリプトが事前コンパイルされます。以前のバージョンでは、スクリプトを事前コンパイルするかどうかを指定できました。

スクリプトがバイナリ コードに事前コンパイルされるため、実行速度が向上しますが、パッケージ サイズは増加します。

スクリプト タスクとスクリプト コンポーネントの相違点

スクリプト タスクとスクリプト コンポーネントには、次のような顕著な相違点があります。

機能

スクリプト タスク

スクリプト コンポーネント

制御フローとデータ フロー

スクリプト タスクはデザイナの [制御フロー] タブで設定され、パッケージのデータ フローの外で実行されます。

スクリプト コンポーネントはデザイナの [データ フロー] ページで設定され、データ フロー タスク内で変換元、変換、または変換先のいずれかを表します。

目的

スクリプト タスクはほとんどの汎用タスクを実行できます。

スクリプト コンポーネントでは、変換元、変換、または変換先のどれを作成するかを指定する必要があります。

実行されるタイミング

スクリプト タスクは、パッケージ ワークフロー内のある時点でカスタム コードを実行します。ループ コンテナまたはイベント ハンドラ内に配置しない限り、実行されるのは 1 回のみです。

スクリプト コンポーネントも実行されるのは 1 回のみですが、通常、メイン処理ルーチンはデータ フロー内のデータ行ごとに 1 回ずつ実行されます。

エディタ

[スクリプト タスク エディタ] には、[全般][スクリプト][式] の 3 つのページがあります。ReadOnlyVariables プロパティ、ReadWriteVariables プロパティ、および ScriptLanguage プロパティのみが、ユーザーが記述できるコードに直接影響を与えます。

[スクリプト変換エディタ] には、[入力列][入力および出力][スクリプト][接続マネージャ] の、最大 4 つのページがあります。この各ページで設定するメタデータやプロパティにより、コードを記述する際に使用できる、自動生成された基本クラスのメンバが指定されます。

パッケージの操作

パッケージの他の機能にアクセスするには、スクリプト タスク用に記述するコードで Dts プロパティを使用します。Dts プロパティは、ScriptMain クラスのメンバです。

スクリプト コンポーネントのコードでは、型指定されたアクセサ プロパティを使用して、変数や接続マネージャなど、特定のパッケージ機能にアクセスします。

PreExecute メソッドでは、読み取り専用変数にのみアクセスできます。PostExecute メソッドでは、読み取り専用変数および読み取り/書き込み変数の両方にアクセスできます。

これらのメソッドの詳細については、「スクリプト コンポーネントのコーディングおよびデバッグ」を参照してください。

変数の使用

スクリプト タスクでは、Dts オブジェクトの Variables プロパティを使用して、タスクの ReadOnlyVariables プロパティおよび ReadWriteVariables プロパティで使用できる変数にアクセスします。例 :

スクリプト コンポーネントでは、自動生成された基本クラスの型指定されたアクセサ プロパティを使用します。このプロパティは、コンポーネントの ReadOnlyVariables プロパティおよび ReadWriteVariables プロパティから作成されます。例 :

接続の使用

スクリプト タスクでは、Dts オブジェクトの Connections プロパティを使用して、パッケージで定義された接続マネージャにアクセスします。例 :

スクリプト コンポーネントでは、自動生成された基本クラスの型指定されたアクセサ プロパティを使用します。このプロパティは、エディタの [接続マネージャ] ページでユーザーが入力した、接続マネージャの一覧から作成されます。例 :

イベントの発生

スクリプト タスクでは、Dts オブジェクトの Events プロパティを使用してイベントを発生させます。例 :

スクリプト コンポーネントでエラー、警告、情報メッセージを発生させるには、ComponentMetaData プロパティから返される IDTSComponentMetaData100 インターフェイスのメソッドを使用します。例 :

ログ記録

スクリプト タスクでは、Dts オブジェクトの Log メソッドを使用して、有効なログ プロバイダに情報を記録します。例 :

スクリプト コンポーネントでは、自動生成された基本クラスの Log メソッドを使用して、有効なログ プロバイダに情報を記録します。例 :

[Visual Basic]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)

結果の返送

スクリプト タスクでは、Dts オブジェクトの TaskResult プロパティ、および場合によって ExecutionValue プロパティを使用して、ランタイムに結果を通知します。

スクリプト コンポーネントはデータ フロー タスクの一部として実行され、プロパティを使用して結果をレポートすることはありません。

デバッグ

スクリプト タスクでは、設計環境におけるコードのデバッグ時に、ブレークポイントを使用したステップ実行がサポートされます。

注意注意
複数のスクリプト タスクを含むパッケージをデバッグする場合、いずれか 1 つのスクリプト タスクのみのブレークポイントがヒットし、他のスクリプト タスク内のブレークポイントは無視されます。スクリプト タスクが Foreach ループ コンテナまたは For ループ コンテナの一部である場合は、そのループの最初の反復処理を実行した後、スクリプト タスクのブレークポイントはすべて無視されます。

スクリプト コンポーネントでは、デバッグはサポートされていません。詳細については、「スクリプト コンポーネントのコーディングおよびデバッグ」の「スクリプト コンポーネントのデバッグ」を参照してください。

Integration Services のアイコン (小) 最新の Integration Services の入手

マイクロソフトが提供する最新のダウンロード、アーティクル、サンプル、ビデオ、およびコミュニティで選択されたソリューションについては、MSDN または TechNet の Integration Services のページを参照してください。

これらの更新が自動で通知されるようにするには、ページの RSS フィードを購読します。