次の方法で共有


スクリプト タスク

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

スクリプト タスクでは、組み込みのタスクで利用できない関数を実行するコード、および SQL Server Integration Services で用意されている変換を実行するコードが用意されています。 また、スクリプト タスクを使用すると、複数のタスクおよび変換を使用しなくても、関数を 1 つのスクリプトに結合できます。 スクリプト タスクは、データ行ごとに 1 回ではなく、1 つのパッケージ内で 1 回 (または列挙されたオブジェクトごとに 1 回) 行う作業に使用します。

スクリプト タスクは、次の目的で使用できます。

  • 組み込みの接続の種類ではサポートされていないその他のテクノロジを使用して、データにアクセスします。 たとえば、スクリプトは、Active Directory Service Interfaces (ADSI) を使用して Active Directory のユーザー名にアクセスし、ユーザー名を抽出できます。

  • パッケージ固有のパフォーマンス カウンターを作成します。 たとえば、スクリプトを使用して、複雑なタスクや時間のかかるタスクの実行中に更新されるパフォーマンス カウンターを作成できます。

  • 指定されたファイルが空かどうか、またはそれらのファイルに含まれている行数を判断し、その情報に基づいて、パッケージ内の制御フローを調整します。 たとえば、ファイル内の行数が 0 行の場合は、変数の値が 0 に設定され、値を評価する優先順位制約で、ファイル システム タスクによるファイルのコピーが回避されます。

スクリプトを使用してセット内のデータ行ごとに同じ作業を行う必要がある場合は、スクリプト タスクではなく、スクリプト コンポーネントを使用します。 たとえば、郵送料が妥当かどうかを評価し、極端に高いデータ行や極端に安いデータ行をスキップする場合は、スクリプト コンポーネントを使用します。 詳細については、「 Script Component」を参照してください。

複数のパッケージで 1 つのスクリプトを使用する場合は、スクリプト タスクを使用せず、カスタム タスクを記述することをお勧めします。 詳細については、「 カスタム タスクの開発」を参照してください。

スクリプト タスクがパッケージにとって適切な選択である場合、タスクが使用するスクリプトを開発して、タスク自体を構成する必要があります。

タスクが使用するスクリプトの記述と実行

スクリプト タスクでは、スクリプトを記述する環境、およびそのスクリプトを実行するエンジンとして Microsoft Visual Studio Tools for Applications (VSTA) を使用します。

VSTA には、色分け表示が可能な Visual Studio エディター、IntelliSense、 Visual Studio オブジェクト エクスプローラー など、環境での標準機能がすべて含まれています。 VSTA には、他の Microsoft の開発ツールに付属しているのと同じデバッガーも含まれています。 スクリプト内のブレークポイントは、 Integration Services のタスクやコンテナーのブレークポイントとシームレスに動作します。 VSTA では、 Microsoft Visual Basic と Microsoft Visual C# の両方のプログラミング言語がサポートされます。

スクリプトを実行するには、パッケージを実行するコンピューターに VSTA がインストールされている必要があります。 パッケージを実行すると、タスクはスクリプト エンジンを読み込み、スクリプトを実行します。 プロジェクト内のアセンブリへの参照を追加すると、スクリプトから外部の .NET アセンブリにアクセスできます。 現在、.NET Core および .NET Standard のアセンブリ参照はサポートされていません。

注意

スクリプトをプリコンパイルするかどうかを指定できた以前のバージョンとは異なり、 SQL Server 2008 Integration Services (SSIS) 以降のバージョンではすべてのスクリプトがプリコンパイルされます。 スクリプトがプリコンパイルされると、実行時に言語エンジンを読み込まないため、パッケージの実行速度が向上します。 ただし、コンパイル済みのバイナリ ファイルは多量のディスク領域を使用します。

スクリプト タスクの構成

スクリプト タスクは、次の方法で構成できます。

  • タスクを実行するカスタム スクリプトを指定します。

  • スクリプト タスク コードのエントリ ポイントとして Integration Services ランタイムが呼び出す、VSTA プロジェクトのメソッドを指定します。

  • スクリプト言語を指定します。

  • 必要に応じて、スクリプトで使用する読み取り専用の変数および読み取り/書き込み変数の一覧を指定します。

これらのプロパティは SSIS デザイナーから設定するか、またはプログラムによって設定します。

デザイナーでのスクリプト タスクの構成

次の表では、スクリプト タスクでログに記録できる ScriptTaskLogEntry イベントについて説明します。 ScriptTaskLogEntry イベントは、 [SSIS ログの構成] ダイアログ ボックスの [詳細] タブでログ記録の対象として選択できます。 詳細については、「 Integration Services (SSIS) のログ記録」を参照してください。

ログ エントリ 説明
ScriptTaskLogEntry スクリプト内でのログ記録の実装結果を報告します。 タスクは、 Dts オブジェクトの Log メソッドを呼び出すたびにログ エントリを書き込みます。 タスクは、これらのエントリをコードの実行時に書き込みます。 詳細については、「 スクリプト タスクでのログ記録」を参照してください。

SSIS デザイナーで設定できるプロパティの詳細については、次のトピックを参照してください。

SSIS デザイナーでこれらのプロパティを設定する方法については、次のトピックを参照してください。

プログラムによるスクリプト タスクの構成

プログラムによってこれらのプロパティを設定する方法については、次のトピックを参照してください。

[スクリプト タスク エディター] \([全般] ページ)

[スクリプト タスク エディター] ダイアログ ボックスの [全般] ページを使用すると、スクリプト タスクの名前と説明を入力できます。

スクリプト タスクの詳細については、「 Script Task 」および「 スクリプト タスク エディターでのスクリプト タスクの構成」を参照してください。 スクリプト タスクのプログラミングの詳細については、「 Extending the Package with the Script Task」を参照してください。

オプション

Name
スクリプト タスクの固有の名前を指定します。 この名前は、タスク アイコンのラベルとして使用されます。

Note

タスク名はパッケージ内で一意である必要があります。

説明
スクリプト タスクの説明を入力します。

[スクリプト タスク エディター] \([スクリプト] ページ)

[スクリプト タスク エディター] ダイアログ ボックスの [スクリプト] ページを使用すると、スクリプト プロパティを設定し、スクリプトによってアクセスできる変数を指定できます。

注意

SQL Server 2008 Integration Services (SSIS) およびそれ以降のバージョンでは、すべてのスクリプトがプリコンパイル済みです。 以前のバージョンでは、 PrecompileScriptIntoBinaryCode プロパティを設定して、スクリプトを事前コンパイルするかどうかを指定していました。

スクリプト タスクの詳細については、「 Script Task 」および「 スクリプト タスク エディターでのスクリプト タスクの構成」を参照してください。 スクリプト タスクのプログラミングの詳細については、「 Extending the Package with the Script Task」を参照してください。

オプション

[ScriptLanguage]
タスクのスクリプト言語を選択します。 Microsoft Visual Basic または Microsoft Visual C# のいずれかです。

タスクのスクリプトを作成した後に、 [ScriptLanguage] プロパティの値を変更することはできません。

スクリプト タスクの既定のスクリプト言語を設定するには、 [オプション] ダイアログ ボックスの [全般] ページにある [スクリプト言語] オプションを使用します。 詳細については、「 General Page」を参照してください。

EntryPoint
スクリプト タスクのコードのエントリ ポイントとして Integration Services ランタイムが呼び出すメソッドを指定します。 指定するメソッドは、Microsoft Visual Studio Tools for Applications (VSTA) プロジェクトの ScriptMain クラスに存在する必要があります。ScriptMain クラスは、スクリプト テンプレートによって生成される既定のクラスです。

VSTA プロジェクトでメソッドの名前を変更する場合は、 EntryPoint プロパティの値を変更する必要があります。

[ReadOnlyVariables]
スクリプトに使用できる読み取り専用の変数の一覧をコンマ区切りで入力するか、省略記号ボタン ( [...] ) をクリックして [変数の選択] ダイアログ ボックスで変数を選択します。

注意

変数名では大文字と小文字が区別されます。

[ReadWriteVariables]
スクリプトに使用できる読み取り/書き込み用の変数の一覧をコンマ区切りで入力するか、省略記号ボタン ( [...] ) をクリックして [変数の選択] ダイアログ ボックスで変数を選択します。

注意

変数名では大文字と小文字が区別されます。

[スクリプトの編集]
スクリプトを作成または変更できる VSTA IDE が開きます。