次の方法で共有


パッケージで変数を使用する

変数は、Integration Services パッケージに便利で柔軟な追加です。パッケージ内のオブジェクト間、および親パッケージと子パッケージ間の通信を提供できます。 変数は、式やスクリプトでも使用できます。

User-Defined 変数とシステム変数

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

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

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

変数の使用シナリオ

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 変数の値よりも小さいデータ行を出力に送信します。 詳細については、「派生列変換」、「条件分割変換」、および「Integration Services (SSIS) の式」を参照してください。

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

パラメーターおよびリターン コード 入力パラメーターに値を提供したり、出力パラメーターおよびリターン コードの値を格納したりします。 そのためには、変数をパラメーターおよび戻り値にマップします。 たとえば、変数 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の値によって更新されます。 詳細については、「 スクリプト タスクでの変数の使用」を参照してください。

構成と変数

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

ユーザー定義変数を追加、変更、削除するには