次の方法で共有


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

Integration Services デザイナーの [制御フロー] ウィンドウで使用できるスクリプト タスクと、[データ フロー] ウィンドウで使用できるスクリプト コンポーネントには、Integration Services パッケージ内で非常に異なる目的があります。 タスクは汎用制御フロー ツールですが、コンポーネントはデータ フローのソース、変換、または変換先として機能します。 ただし、目的は異なりますが、スクリプト タスクとスクリプト コンポーネントには、使用するコーディング ツールと、開発者が使用できるパッケージ内のオブジェクトに類似点があります。 それらの類似点と相違点を理解することは、タスクとコンポーネントの両方をより効果的に使用するのに役立つ場合があります。

スクリプト タスクとスクリプト コンポーネントの類似点

スクリプト タスクとスクリプト コンポーネントは、次の一般的な機能を共有します。

特徴 説明
2 つのデザイン時モード タスクとコンポーネントの両方で、まずエディターでプロパティを指定し、開発環境に切り替えてコードを記述します。
Microsoft Visual Studio Tools for Applications (VSTA) タスクとコンポーネントはどちらも同じ VSTA IDE を使用し、Microsoft Visual Basic または Microsoft Visual C# で記述されたコードをサポートします。
プリコンパイル済みスクリプト SQL Server 2008 Integration Services (SSIS) 以降では、すべてのスクリプトがプリコンパイルされます。 以前のバージョンでは、スクリプトがプリコンパイルされたかどうかを指定できました。

スクリプトはバイナリ コードにプリコンパイルされ、実行速度が向上しますが、パッケージ サイズが増加します。
デバッグ タスクとコンポーネントの両方で、ブレークポイントと、デザイン環境でのデバッグ中のコードのステップ実行がサポートされます。 詳細については、「 スクリプト タスクのコーディングとデバッグ 」および「スクリプト コンポーネントのコーディングとデバッグ」を参照してください。/extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.

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

スクリプト タスクとスクリプト コンポーネントには、次のような大きな違いがあります。

特徴 スクリプト タスク スクリプト コンポーネント
制御フロー/データ フロー スクリプト タスクはデザイナーの [制御フロー] タブで構成され、パッケージのデータ フローの外部で実行されます。 スクリプト コンポーネントはデザイナーの [データ フロー] ページで構成され、データ フロー タスクのソース、変換、または変換先を表します。
目的 スクリプト タスクは、ほぼすべての汎用タスクを実行できます。 スクリプト コンポーネントを使用してソース、変換、または変換先を作成するかどうかを指定する必要があります。
実行 スクリプト タスクは、パッケージ ワークフローのある時点でカスタム コードを実行します。 ループ コンテナーまたはイベント ハンドラーに配置しない限り、1 回だけ実行されます。 スクリプト コンポーネントも 1 回実行されますが、通常は、データ フロー内のデータ行ごとにメイン処理ルーチンを 1 回実行します。
編集者 スクリプト タスク エディターには、[全般]、[スクリプト]、[式] の 3 つのページがあります。 ReadOnlyVariablesプロパティと ReadWriteVariables プロパティと ScriptLanguage プロパティのみが、記述できるコードに直接影響します。 スクリプト変換エディターには、最大 4 つのページ (入力列入力と出力スクリプト接続マネージャー) があります。 これらの各ページで構成するメタデータとプロパティによって、コーディングで使用するために自動生成される基底クラスのメンバーが決まります。
パッケージとの対話 スクリプト タスク用に記述されたコードでは、 Dts プロパティを使用してパッケージの他の機能にアクセスします。 Dts プロパティは、ScriptMain クラスのメンバーです。 スクリプト コンポーネント コードでは、型指定されたアクセサー プロパティを使用して、変数や接続マネージャーなどの特定のパッケージ機能にアクセスします。

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

これらのメソッドの詳細については、「スクリプト コンポーネントのコーディングとデバッグ](../extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.
変数の使用 スクリプト タスクでは、Dts オブジェクトの Variables プロパティを使用して、タスクのReadOnlyVariablesプロパティとReadWriteVariablesプロパティで使用できる変数にアクセスします。 例えば次が挙げられます。

[VB]

Dim myVar as String myVar = Dts.Variables("MyStringVariable").Value.ToString



[C#]

string myVar; myVar = Dts.Variables["MyStringVariable"].Value.ToString();
スクリプト コンポーネントは、自動生成されたベース クラスの型指定されたアクセサー プロパティを使用します。このプロパティは、コンポーネントの ReadOnlyVariables プロパティと ReadWriteVariables プロパティから作成されます。 例えば次が挙げられます。

[VB]

Dim myVar as String myVar = Me.Variables.MyStringVariable



[C#]

string myVar; myVar = this.Variables.MyStringVariable;
接続の使用 スクリプト タスクでは、Dts オブジェクトの Connections プロパティを使用して、パッケージで定義されている接続マネージャーにアクセスします。 例えば次が挙げられます。

[VB]

Dim myFlatFileConnection As String myFlatFileConnection = _ DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _ String)



[C#]

string myFlatFileConnection; myFlatFileConnection = (Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
スクリプト コンポーネントは、自動生成された基底クラスの型指定されたアクセサー プロパティを使用します。このプロパティは、エディターの [接続マネージャー] ページでユーザーが入力した接続マネージャーの一覧から作成されます。 例えば次が挙げられます。

[VB]

Dim connMgr As IDTSConnectionManager100 connMgr = Me.Connections.MyADONETConnection



[C#]

IDTSConnectionManager100 connMgr; connMgr = this.Connections.MyADONETConnection;
イベントの発生 スクリプト タスクでは、Dts オブジェクトの Events プロパティを使用してイベントを発生させます。 例えば次が挙げられます。

[VB]

Dts.Events.FireError(0, "Event Snippet", _ ex.Message & ControlChars.CrLf & ex.StackTrace, _ "", 0)



[C#]

Dts.Events.FireError(0, "Event Snippet", ex.Message + "\r" + ex.StackTrace, "", 0);
スクリプト コンポーネントは、ComponentMetaData プロパティによって返されるIDTSComponentMetaData100 インターフェイスのメソッドを使用して、エラー、警告、および情報メッセージを発生させます。 例えば次が挙げられます。

[VB]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
ロギング(記録) スクリプト タスクでは、Dts オブジェクトの Log メソッドを使用して、有効なログ プロバイダーに情報を記録します。 例えば次が挙げられます。

[VB]

Dim bt(0) As Byte Dts.Log("Test Log Event", _ 0, _ bt)



[C#]

byte[] bt = new byte[0]; Dts.Log("Test Log Event", 0, bt);
スクリプト コンポーネントは、自動生成された基底クラスの Log メソッドを使用して、有効なログ プロバイダーに情報をログに記録します。 例えば次が挙げられます。

[VB]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)



[C#]

byte[] bt = new byte[0]; this.Log("Test Log Event", 0, bt);
結果の返送 スクリプト タスクでは、Dts オブジェクトの TaskResult プロパティと省略可能な ExecutionValue プロパティの両方を使用して、結果をランタイムに通知します。 スクリプト コンポーネントは、データ フロー タスクの一部として実行され、これらのプロパティを使用して結果を報告しません。

こちらもご覧ください

スクリプト タスクによるパッケージの拡張
スクリプト コンポーネントによるデータ フローの拡張
SQL Server Integration Services SSIS でスクリプト タスクを使用して Web サービスに接続する