パッケージ実行タスク
パッケージ実行タスクは、パッケージのワークフローの一部として他のパッケージを実行できるようにすることで、Integration Services のエンタープライズ用機能を拡張します。
パッケージ実行タスクは、次の目的で使用されます。
複雑なパッケージ ワークフローを分割します。このタスクによりワークフローを複数のパッケージに分割できるため、読み取り、テスト、管理が容易になります。たとえば、スター スキーマにデータを読み込む場合、個別のパッケージを構築して各ディメンション テーブルおよびファクト テーブルを設定できます。
パッケージのパーツを再利用します。パッケージ ワークフローのパーツを他のパッケージで再利用できます。たとえば、各種パッケージからの呼び出しが可能なデータ抽出モジュールを作成できます。抽出モジュールを呼び出す各パッケージは、各種データのスクラビング、フィルタによる選択、集計操作を実行します。
作業単位をグループ化します。作業単位を個別のパッケージにカプセル化し、トランザクション コンポーネントとして親パッケージのワークフローに結合できます。たとえば、親パッケージはアクセサリ パッケージを実行し、その実行の成否に基づいてトランザクションをコミットまたはロールバックします。
パッケージのセキュリティを管理します。パッケージ作成者がアクセスを必要とするのは、マルチパッケージ ソリューションの一部のみです。パッケージを複数パッケージに分割することにより、作成者に関連パッケージのみへのアクセス権を与えることができるため、セキュリティ レベルを高めることができます。
通常、他のパッケージを実行するパッケージは親パッケージと呼ばれ、親ワークフローで実行されるパッケージは子パッケージと呼ばれます。
パッケージ実行タスクでは、SQL Servermsdb データベース内に格納されたパッケージ、およびファイル システム内に格納されたパッケージを実行できます。タスクは OLE DB 接続マネージャを使用して SQL Server に接続し、ファイル接続マネージャを使用してファイル システムに接続します。詳細については、「OLE DB 接続マネージャ」および「フラット ファイル接続マネージャ」を参照してください。
パッケージ実行タスクでは、データベース メンテナンス プランを実行することもできます。これを実行すると、同じ Integration Services ソリューション内の SSIS パッケージとデータベース メンテナンス プランの両方を管理できます。データベース メンテナンス プランは SSIS パッケージに似ていますが、プランはデータベース メンテナンス タスクのみを含むことができ、常に msdb 内に格納される点が異なります。詳細については、「データベースのメンテナンス (データベース エンジン)」および「メンテナンス タスク」を参照してください。
ファイル システム内に格納されたパッケージを選択する場合、パッケージの名前と格納場所を指定する必要があります。パッケージはファイル システム内の任意の場所に格納できます。親パッケージと同じフォルダ内にある必要はありません。
子パッケージは、親パッケージのプロセス内で実行することも、独自のプロセス内で実行することもできます。子パッケージを独自のプロセス内で実行する場合、より多くのメモリを必要としますが、柔軟性はより高くなります。たとえば、子プロセスが失敗した場合でも親プロセスを続行できます。
また、親パッケージと子パッケージが 1 つの単位として共に失敗する方が良い場合や、別のプロセスで追加のオーバーヘッドが発生しない方が良い場合もあります。たとえば、子プロセスが失敗し、パッケージの親プロセス内の次の処理が、子プロセスが成功した場合に行われる場合、子パッケージは親パッケージのプロセス内で実行される必要があります。
既定では、パッケージ実行タスクの ExecuteOutOfProcess プロパティは False に設定されるので、子パッケージは親パッケージと同じプロセス内で実行されます。このプロパティを True に設定した場合、制限された機能を含むパッケージのみをデバッグできます。使用しているエディションの SQL Server でサポートされるすべてのパッケージをデバッグするには、Integration Services をインストールする必要があります。
トランザクションの拡張
親パッケージで使用するトランザクションを子パッケージに拡張できます。このため、両方のパッケージで実行される作業をコミットまたはロールバックできます。たとえば、親パッケージで実行されるデータベースの挿入は、子パッケージで実行されるデータベースの挿入に基づいてコミットまたはロールバックできます。その逆も同様です。詳細については、「トランザクションの継承」を参照してください。
ログ記録の詳細の設定
パッケージ実行タスクで実行される子パッケージでログ記録を使用するように構成する場合でも、そうでない場合でも、子パッケージは、ログ記録の詳細を常に親パッケージに転送します。パッケージ実行タスクがログ記録を使用するように構成されている場合、子パッケージからの詳細がログ記録されます。詳細については、「パッケージへのログ機能の実装」を参照してください。
子パッケージへの値の引き渡し
子パッケージは、子パッケージを呼び出す別のパッケージ (通常は、親パッケージ) によって子パッケージに渡された値を使用することがあります。親パッケージから渡される値を使用することは、次のようなシナリオで役に立ちます。
大規模なワークフローの一部が各種パッケージに割り当てられている場合。たとえば、特定のパッケージで毎夜データをダウンロードし、データを要約し、要約データの値を変数に割り当て、その値を別のパッケージに渡して、さらにデータを処理する場合などです。
親パッケージが子パッケージのタスクを動的に調整する場合。たとえば、親パッケージで現在の月の日数を決定し、その数値を変数に割り当て、子パッケージでその数値の回数だけタスクを実行する場合などです。
親パッケージによって動的に抽出されたデータに、子パッケージがアクセスする必要がある場合。たとえば、親パッケージでテーブルからデータを抽出し、行セットを変数に読み込んで、子パッケージでさらにそのデータを処理する場合などです。
パッケージの設定を使用して、親パッケージの値を子パッケージで使用できるようにできます。Integration Services では、親パッケージ変数という種類の設定を使用して、親パッケージの値を子パッケージに渡すことができます。この設定は子パッケージ上で構築され、親パッケージ内の変数を使用します。
親パッケージの変数は、パッケージ実行タスクのスコープ内、またはパッケージなどの親コンテナ内で定義できます。同じ名前の変数が複数ある場合、パッケージ実行タスクのスコープ内で定義された変数、またはタスクのスコープ内で最も近い変数が使用されます。次に、子パッケージ内の変数、または子パッケージ内のオブジェクトのプロパティに構成がマップされます。また、ActiveX スクリプト タスク、スクリプト タスク、またはスクリプト コンポーネントで使用されるスクリプト内でも変数を使用できます。
詳細については、「子パッケージで親変数の値を使用する方法」を参照してください。
その他の関連タスク
Integration Services には、SQL Server 2000 のパッケージ、実行可能ファイル、およびバッチ ファイルの実行などの、ワークフロー処理を実行するタスクが含まれています。
これらのタスクの詳細については、次のトピックのいずれかを参照してください。
パッケージ実行タスクの構成
プロパティを設定するには SSIS デザイナから行うか、またはプログラムによって設定します。
SSIS デザイナで設定できるプロパティの詳細については、次のトピックのいずれかを参照してください。
SSIS デザイナでこれらのプロパティを設定する方法については、次のトピックを参照してください。
プログラムによるパッケージ実行タスクの構成
プログラムによってこれらのプロパティを設定する方法については、次のトピックを参照してください。
|