次の方法で共有


パッケージ実行タスク

パッケージ実行タスクは、パッケージのワークフローの一部として他のパッケージを実行できるようにすることで、Integration Services のエンタープライズ用機能を拡張します。

パッケージ実行タスクは、次の目的で使用されます。

  • 複雑なパッケージ ワークフローを分割します。 このタスクによりワークフローを複数のパッケージに分割できるため、読み取り、テスト、管理が容易になります。 たとえば、スター スキーマにデータを読み込む場合、個別のパッケージを構築して各ディメンション テーブルおよびファクト テーブルを設定できます。

  • パッケージのパーツを再利用します。 パッケージ ワークフローのパーツを他のパッケージで再利用できます。 たとえば、各種パッケージからの呼び出しが可能なデータ抽出モジュールを作成できます。 抽出モジュールを呼び出す各パッケージは、各種データのスクラビング、フィルターによる選択、集計操作を実行します。

  • 作業単位をグループ化します。 作業単位を個別のパッケージにカプセル化し、トランザクション コンポーネントとして親パッケージのワークフローに結合できます。 たとえば、親パッケージはアクセサリ パッケージを実行し、その実行の成否に基づいてトランザクションをコミットまたはロールバックします。

  • パッケージのセキュリティを管理します。 パッケージ作成者がアクセスを必要とするのは、マルチパッケージ ソリューションの一部のみです。 パッケージを複数パッケージに分割することにより、作成者に関連パッケージのみへのアクセス権を与えることができるため、セキュリティ レベルを高めることができます。

通常、他のパッケージを実行するパッケージは親パッケージと呼ばれ、親ワークフローで実行されるパッケージは子パッケージと呼ばれます。

Integration Services には、実行可能ファイルやバッチ ファイルの実行などの、ワークフロー処理を実行するタスクが含まれています。 詳細については、「プロセス実行タスク」を参照してください。

パッケージの実行

パッケージ実行タスクでは、親パッケージと同じプロジェクトに含まれる子パッケージを実行できます。 子パッケージをプロジェクトから選択するには、ReferenceType プロパティを [プロジェクト参照] に設定し、PackageNameFromProjectReference プロパティを設定します。

注意

[ReferenceType] オプションは読み取り専用であり、対象パッケージを含むプロジェクトがプロジェクト配置モデルに変換されていない場合は [外部参照] に設定されます。 変換の詳細については、「Integration Services サーバーへのプロジェクトの配置」を参照してください。

パッケージ実行タスクでは、SQL Server msdb データベース内に格納されたパッケージ、およびファイル システム内に格納されたパッケージも実行できます。 タスクは OLE DB 接続マネージャーを使用して SQL Server に接続するか、ファイル接続マネージャーを使用してファイル システムに接続します。 詳細については、「OLE DB 接続マネージャー」および「フラット ファイル接続マネージャー」を参照してください。

パッケージ実行タスクでは、データベース メンテナンス プランを実行することもできます。これを実行すると、同じ Integration Services ソリューション内の SSIS パッケージとデータベース メンテナンス プランの両方を管理できます。 データベース メンテナンス プランは SSIS パッケージに似ていますが、プランはデータベース メンテナンス タスクのみを含むことができ、常に msdb データベース内に格納される点が異なります。

ファイル システム内に格納されたパッケージを選択する場合、パッケージの名前と格納場所を指定する必要があります。 パッケージはファイル システム内の任意の場所に格納できます。親パッケージと同じフォルダー内にある必要はありません。

子パッケージは、親パッケージのプロセス内で実行することも、独自のプロセス内で実行することもできます。 子パッケージを独自のプロセス内で実行する場合、より多くのメモリを必要としますが、柔軟性はより高くなります。 たとえば、子プロセスが失敗した場合でも親プロセスを続行できます。

また、親パッケージと子パッケージが 1 つの単位として共に失敗する方が良い場合や、別のプロセスで追加のオーバーヘッドが発生しない方が良い場合もあります。 たとえば、子プロセスが失敗し、パッケージの親プロセス内の次の処理が、子プロセスが成功した場合に行われる場合、子パッケージは親パッケージのプロセス内で実行される必要があります。

既定では、パッケージ実行タスクの ExecuteOutOfProcess プロパティは False に設定されるので、子パッケージは親パッケージと同じプロセス内で実行されます。 このプロパティを True に設定すると、子パッケージは別のプロセスで実行されます。 これにより、子パッケージの起動が遅くなる場合があります。 また、このプロパティを True に設定した場合、ツールのみのインストールではパッケージをデバッグできません。 Integration Services をインストールする必要があります。 詳細については、「Integration Services のインストール」を参照してください。

トランザクションの拡張

親パッケージで使用するトランザクションを子パッケージに拡張できます。このため、両方のパッケージで実行される作業をコミットまたはロールバックできます。 たとえば、親パッケージで実行されるデータベースの挿入は、子パッケージで実行されるデータベースの挿入に基づいてコミットまたはロールバックできます。その逆も同様です。 詳細については、「トランザクションの継承」を参照してください。

ログ記録の詳細の設定

パッケージ実行タスクで実行される子パッケージでログ記録を使用するように構成する場合でも、そうでない場合でも、子パッケージは、ログ記録の詳細を常に親パッケージに転送します。 パッケージ実行タスクがログ記録を使用するように構成されている場合、子パッケージからの詳細がログ記録されます。 詳細については、「Integration Services (SSIS) のログ記録」を参照してください。

子パッケージへの値の引き渡し

子パッケージは、子パッケージを呼び出す別のパッケージ (通常は、親パッケージ) によって子パッケージに渡された値を使用することがあります。 親パッケージから渡される値を使用することは、次のようなシナリオで役に立ちます。

  • 大規模なワークフローの一部が各種パッケージに割り当てられている場合。 たとえば、特定のパッケージで毎夜データをダウンロードし、データを要約し、要約データの値を変数に割り当て、その値を別のパッケージに渡して、さらにデータを処理する場合などです。

  • 親パッケージが子パッケージのタスクを動的に調整する場合。 たとえば、親パッケージで現在の月の日数を決定し、その数値を変数に割り当て、子パッケージでその数値の回数だけタスクを実行する場合などです。

  • 親パッケージによって動的に抽出されたデータに、子パッケージがアクセスする必要がある場合。 たとえば、親パッケージでテーブルからデータを抽出し、行セットを変数に読み込んで、子パッケージでさらにそのデータを処理する場合などです。

次のいずれかの方法を使用して、子パッケージに値を渡すことができます。

  • パッケージ構成

    Integration Services では、親パッケージ変数という種類の構成を使用して、親パッケージの値を子パッケージに渡すことができます。 この設定は子パッケージ上で構築され、親パッケージ内の変数を使用します。 構成は、子パッケージ内の変数、または子パッケージ内のオブジェクトのプロパティにマップされます。 また、スクリプト タスクまたはスクリプト コンポーネントで使用されるスクリプト内でも変数を使用できます。

  • パラメーター

    親パッケージの変数またはパラメーター、またはプロジェクトのパラメーターを子パッケージのパラメーターにマップするように、パッケージ実行タスクを構成できます。 プロジェクトはプロジェクト配置モデルを使用し、子パッケージが親パッケージと同じプロジェクトに含まれている必要があります。 詳細については、「パッケージ実行タスク エディター」を参照してください。

    注意

    機密性が高くない子パッケージのパラメーターが、機密性の高い親パラメーターにマップされる場合は、子パッケージの実行に失敗します。

    サポートされているマッピングの条件は次のとおりです。

    • 機密性の高い子パッケージのパラメーターは、機密性の高い親パラメーターにマップされます。

    • 機密性の高い子パッケージのパラメーターは、機密性が高くない親パラメーターにマップされます。

    • 機密性が高くない子パッケージのパラメーターは、機密性が高くない親パラメーターにマップされます。

親パッケージの変数は、パッケージ実行タスクのスコープ内、またはパッケージなどの親コンテナー内で定義できます。 同じ名前の変数が複数ある場合、パッケージ実行タスクのスコープ内で定義された変数、またはタスクのスコープ内で最も近い変数が使用されます。

詳細については、「子パッケージでの変数およびパラメーターの値の使用」を参照してください。

親パッケージの変数へのアクセス

子パッケージではスクリプト タスクを使用して、親パッケージの変数にアクセスできます。 スクリプト タスク エディター[スクリプト] ページに親パッケージ変数の名前を入力するときは、変数名に User: を含めないでください。 そうしないと、親パッケージを実行したときに子パッケージで変数が見つかりません。 親パッケージの変数にアクセスするスクリプト タスクの使用方法の詳細については、consultingblogs.emc.com のブログ エントリ「SSIS: 親パッケージの変数へのアクセス」を参照してください。

パッケージ実行タスクの構成

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

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

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

プログラムによるパッケージ実行タスクの構成

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

関連コンテンツ

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

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


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