Integration Services の変数
変数には、SQL Server Integration Services パッケージと、パッケージに含まれるコンテナー、タスク、およびイベント ハンドラーで、実行時に使用できる値が格納されます。スクリプト タスクおよびスクリプト コンポーネント内のスクリプトも、変数を使用できます。タスクとコンテナーにワークフロー内での順位を付ける優先順位制約では、制約の定義に式を含める場合に変数を使用できます。
変数は、次の目的で Integration Services パッケージ内で使用できます。
実行時に、パッケージ要素のプロパティを更新します。たとえば、1 つの Foreach ループ コンテナーで許可できる実行可能ファイルの数を動的に設定できます。
メモリ内に参照テーブルを組み込みます。たとえば、パッケージは、データ値を持つ変数を読み込む SQL 実行タスクを実行できます。
データ値を持つ変数を読み込み、それらを使用して WHERE 句の検索条件を指定します。たとえば、SQL 実行タスク内の Transact-SQL ステートメントによって使用される変数の値をスクリプト タスク内のスクリプトで更新できます。
整数値を持つ変数を読み込み、その値を使用してパッケージ制御フロー内のループを制御します。たとえば、For ループ コンテナーの評価式内の変数を使用して繰り返しを制御できます。
実行時に Transact-SQL ステートメントのパラメーター値を作成します。たとえば、パッケージは SQL 実行タスクを実行し、変数を使用して Transact-SQL ステートメント内のパラメーターを動的に設定できます。
変数値が含まれる式を構築します。たとえば、派生列の変換は、変数値に列の値を乗算することによって取得した結果を使用して、列の値を設定できます。
Integration Services では、ユーザー定義変数とシステム変数の、2 種類の変数がサポートされています。ユーザー定義変数とはパッケージの開発者によって定義された変数で、システム変数とは Integration Services によって定義された変数です。ユーザー定義変数は、パッケージで必要な数だけ作成できますが、システム変数は追加作成できません。
変数 (システム変数とユーザー定義変数) はすべて、SQL 実行タスクが使用するパラメーター バインドで使用して、SQL ステートメントのパラメーターに変数をマップできます。詳細については、「SSIS SQL 実行タスク」および「SQL 実行タスクにおけるパラメーターとリターン コードの使用」を参照してください。
注 |
---|
ユーザー定義変数とシステム変数の名前では、大文字と小文字が区別されます。 |
パッケージ、Foreach ループ コンテナー、For ループ コンテナー、シーケンス コンテナー、タスク、およびイベント ハンドラーの、すべての種類の Integration Services コンテナーに対してユーザー定義変数を作成できます。ユーザー定義変数は、コンテナーの変数のコレクションのメンバーです。
SSIS デザイナーを使用してパッケージを作成すると、変数のコレクションのメンバーは、SSIS デザイナーの [パッケージ エクスプローラー] タブ上の [変数] フォルダー内に表示されます。このフォルダーには、ユーザー定義変数とシステム変数が一覧表示されます。
ユーザー定義変数は、次の方法で構成できます。
変数の名前と説明を指定します。
変数の名前空間を指定します。
変数値が変更されたときに、変数がイベントを起動するかどうかを示します。
変数は読み取り専用か、読み取り/書き込み可能かを示します。
式の評価結果を使用して、変数値を設定します。
パッケージ、またはタスクなどのパッケージ オブジェクトのスコープ内に、変数を作成します。
変数の値とデータ型を指定します。
システム変数で構成可能なオプションは、変数値が変更されたときにイベントを起動するかどうかを指定するオプションのみです。
コンテナーの種類ごとに、異なるセットのシステム変数を使用できます。パッケージとパッケージ要素が使用するシステム変数の詳細については、「システム変数」を参照してください。
変数の実際的な使用シナリオの詳細については、「パッケージでの変数の使用」を参照してください。
名前空間
Integration Services では、User および System の、2 つの名前空間が用意されています。既定では、カスタム変数は User 名前空間に属し、システム変数は System 名前空間に属します。ユーザー定義変数用に追加の名前空間を作成し、User 名前空間の名前を変更することはできますが、System 名前空間の名前を変更したり、変数を System 名前空間に追加したり、システム変数を別の名前空間に割り当てたりすることはできません。
スコープ
変数は、パッケージのスコープ内、またはパッケージ内のコンテナー、タスク、またはイベント ハンドラーのスコープ内で作成されます。パッケージ コンテナーは、コンテナー階層の最上層にあるため、パッケージ スコープを持つ変数はグローバル変数と同じように機能し、パッケージ内のすべてのコンテナーで使用できます。同様に、For ループ コンテナーなどのコンテナーのスコープ内で定義された変数は、For ループ コンテナー内のすべてのタスクまたはコンテナーで使用できます。
パッケージでパッケージ実行タスクを使用して他のパッケージを実行する場合、呼び出し元のパッケージのスコープまたはパッケージ実行タスクで定義された変数は、構成の種類で親パッケージ変数を使用することにより、呼び出し先のパッケージで使用できます。詳細については、「SSIS パッケージ構成」を参照してください。
値
ユーザー定義変数の値には、リテラルまたは式を設定できます。変数には、変数値および変数のデータ型を設定するオプションが含まれています。この 2 つのプロパティには互換性が必要です。たとえば、文字列の値を整数データ型に使用することはできません。
変数を式として評価するように構成した場合は、式を指定する必要があります。式は実行時に評価され、変数は評価結果に設定されます。たとえば、変数が式 DATEPART("month", GETDATE()) を使用している場合、変数の値は、現在の日付の月と等しい数値になります。式は、SSIS 式の構文文法を使用する、有効な式である必要があります。変数に式を使用する場合、リテラルおよび式文法が提供する演算子と関数も使用できますが、パッケージ内のデータ フローの列は参照できません。式の最大長は 4,000 文字です。詳細については、「Integration Services の式のリファレンス」を参照してください。
変数の構成
プロパティを設定するには SSIS デザイナーから行うか、またはプログラムによって設定します。
SSIS で設定できるプロパティの詳細については、「[変数] ウィンドウ」を参照してください。
プログラムによる変数の構成
変数のプロパティ、およびプログラムによるこれらのプロパティの設定方法の詳細については、「Variable」を参照してください。
|