パッケージでの変数の使用

変数は、Integration Services パッケージに追加できる便利で柔軟な機能です。変数を使用すると、パッケージのオブジェクト間、および親パッケージと子パッケージとの間で情報を交換できます。また、変数は式やスクリプトでも使用できます。

ユーザー定義変数とシステム変数

Integration Services ではシステム変数が用意されているほか、ユーザー定義変数をサポートします。新しいパッケージを作成した場合、コンテナやタスクをパッケージに追加した場合、またはイベント ハンドラを作成した場合、Integration Services によってコンテナに一連のシステム変数が追加されます。システム変数には、パッケージ、コンテナ、タスク、またはイベント ハンドラに関する有益な情報が含まれています。たとえば、パッケージの実行時に、MachineName システム変数にはパッケージを実行しているコンピュータの名前が含まれ、StartTime にはパッケージの実行が開始された時刻が含まれます。システム変数は読み取り専用です。詳細については、「システム変数」を参照してください。

ユーザー定義変数を作成して、パッケージで使用できます。ユーザー定義変数は、SSIS の優先順位制約、For ループ コンテナ、派生列変換、および条件分割変換で使用される式、スクリプト、およびプロパティの値を更新するプロパティ式など、多くの方法で使用できます。

たとえば、For ループ コンテナの評価条件でユーザー定義変数を使用できます。また、Foreach ループ コンテナの列挙子コレクション値を変数にマップしたり、SQL 実行タスクがパラメータ化された SQL ステートメントを使用する場合にステートメントのパラメータを変数にマップしたりできます。詳細については、「Integration Services の変数」を参照してください。

変数の使用法のシナリオ

Integration Services パッケージでは、変数をさまざまな方法で使用します。パッケージにユーザー定義変数を追加して、ソリューションに必要な柔軟性と管理性を実装しないと、パッケージ開発があまり進まない場合もあります。シナリオによっては、システム変数もよく使用します。

プロパティの式   パッケージおよびパッケージ オブジェクトのプロパティを設定するプロパティ式に値を提供するために、変数を使用します。たとえば、式 SELECT * FROM @varTableName に含まれている変数 varTableName は、SQL 実行タスクによって実行される SQL ステートメントを更新します。式 DATEPART("d", GETDATE()) == 1? @[User::varPackageFirst]:@[User::varPackageOther] では、varPackageFirst 変数で指定されたパッケージを月の最初の日に実行し、varPackageOther 変数で指定されたパッケージを別の日に実行することにより、[パッケージの実行] タスクで実行されるパッケージを更新しています。詳細については、「パッケージでのプロパティ式の使用」を参照してください。

データ フロー式   変数を使用して、派生列変換と条件分割変換で列に値を設定するための式や、データ行を各種の変換出力に送るための式に値を提供します。たとえば、式 @varSalutation + LastName は、VarSalutation 変数の値と LastName 列を連結します。式 Income < @HighIncome は、Income 列の値が HighIncome 変数の値よりも小さいデータ行を出力に送信します。詳細については、「派生列変換」、「条件分割変換」、および「パッケージでの式の使用」を参照してください。

優先順位制約の式 優先順位制約で制約付き実行可能ファイルを実行するかどうかを決定するために使用する値を提供します。これらの式は、実行結果 (成功、失敗、完了) と組み合わせて使用することも、実行結果の代わりに使用することもできます。たとえば、式 @varMax > @varMin が true に評価される場合、実行可能ファイルは実行されます。詳細については、「優先順位制約への式の追加」を参照してください。

パラメータおよびリターン コード 入力パラメータに値を提供したり、出力パラメータおよびリターン コードの値を格納します。そのためには、変数をパラメータおよび戻り値にマップします。たとえば、変数 varProductId を 23 に設定して SQL ステートメント SELECT * from Production.Product WHERE ProductID = ? を実行すると、ProductID が 23 である製品が取得されます。詳細については、「SQL 実行タスク」および「SQL 実行タスクにおけるパラメータとリターン コードの使用」を参照してください。

For ループ式   For ループの初期化式、評価式、および代入式で使用する値を提供します。たとえば、変数 varCount が 2、変数 varMaxCount が 10、初期化式が @varCount、評価式が @varCount < @varMaxCount、代入式が @varCount =@varCount +1 の場合、ループは 8 回繰り返されます。詳細については、「For ループ コンテナ」を参照してください。

親パッケージ変数の構成   親パッケージから子パッケージに値を渡します。子パッケージは、親パッケージ変数の構成を使用することにより、親パッケージの変数にアクセスできます。たとえば、子パッケージが親パッケージと同じ日付を使用する必要がある場合、子パッケージは親パッケージの GETDATE 関数によって設定される変数を指定する親パッケージ変数の構成を定義できます。詳細については、「パッケージ実行タスク」および「パッケージ構成」を参照してください。

スクリプト タスクおよびスクリプト コンポーネント   読み取り専用変数および読み取り/書き込み変数の一覧をスクリプト タスクまたはスクリプト コンポーネントに提供し、スクリプト内の読み取り/書き込み変数を更新して、更新された値をスクリプトの内外で使用します。たとえば、コード numberOfCars = CType(Dts.Variables("NumberOfCars").Value, Integer) では、スクリプト変数 numberOfCars が変数 NumberOfCars の値によって更新されます。詳細については、「スクリプト タスクでの変数の使用」を参照してください。

構成と変数

変数を動的に更新するために、変数の構成を作成し、パッケージと共に構成を配置して、パッケージの配置時に構成ファイルの変数の値を更新できます。実行時に、パッケージは更新された変数の値を使用します。詳細については、「パッケージの構成の作成」を参照してください。

ユーザー定義変数を追加、修正、および削除するには

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

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

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