システム変数
SQL ServerIntegration Services では、実行中のパッケージとそのオブジェクトに関する情報を格納する、システム変数のセットが用意されています。これらの変数は、式およびプロパティ式の内部で使用でき、パッケージ、コンテナー、タスク、およびイベント ハンドラーをカスタマイズできます。
すべての変数 (システム変数とユーザー定義変数) を SQL 実行タスクが使用するパラメーター バインドで使用して、パラメーターに変数をマップできます。
パッケージ用システム変数
次の表では、Integration Services がパッケージ用に提供するシステム変数について説明します。
システム変数 |
データ型 |
説明 |
---|---|---|
CancelEvent |
Int32 |
タスクがシグナルを送信して実行を停止する必要があることを示す、Windows イベント オブジェクトへのハンドルです。 |
CreationDate |
DateTime |
パッケージが作成された日付です。 |
CreatorComputerName |
String |
パッケージが作成されたコンピューターです。 |
CreatorName |
String |
パッケージの構築者の名前です。 |
ExecutionInstanceGUID |
String |
実行中のパッケージのインスタンスの一意識別子です。 |
InteractiveMode |
Boolean |
パッケージが対話モードで実行されているかどうかを示します。SSIS デザイナーでパッケージを実行中の場合、このプロパティは True に設定されます。DTExecコマンド プロンプト ユーティリティを使用してパッケージを実行中の場合、プロパティは False に設定されます。 |
LocaleId |
Int32 |
パッケージで使用するロケールです。 |
MachineName |
String |
パッケージが実行されているコンピューターの名前です。 |
OfflineMode |
Boolean |
パッケージがオフライン モードかどうかを示します。オフライン モードでは、データ ソースへの接続は取得されません。 |
PackageID |
String |
パッケージの一意識別子です。 |
PackageName |
String |
パッケージの名前です。 |
StartTime |
DateTime |
パッケージの実行を開始した時刻です。 |
UserName |
String |
パッケージを開始したユーザーのアカウントです。ユーザー名は、ドメイン名によって修飾されます。 |
VersionBuild |
Int32 |
パッケージのバージョンです。 |
VersionComment |
String |
パッケージのバージョンに関するコメントです。 |
VersionGUID |
String |
バージョンの一意識別子です。 |
VersionMajor |
Int32 |
パッケージのメジャー バージョンです。 |
VersionMinor |
Int32 |
パッケージのマイナー バージョンです。 |
コンテナー用システム変数
次の表では、Integration Services が、For ループ コンテナー、Foreach ループ コンテナー、およびシーケンス コンテナー用に提供するシステム変数について説明します。
システム変数 |
データ型 |
説明 |
コンテナー |
---|---|---|---|
LocaleId |
Int32 |
コンテナーが使用するロケールです。 |
For ループ コンテナー Foreach ループ コンテナー シーケンス コンテナー |
タスク用システム変数
次の表では、Integration Services がタスク用に提供するシステム変数について説明します。
システム変数 |
データ型 |
説明 |
---|---|---|
CreationName |
String |
タスクの名前です。 |
LocaleId |
Int32 |
タスクが使用するロケールです。 |
TaskID |
String |
タスク インスタンスの一意識別子です。 |
TaskName |
String |
タスク インスタンスの名前です。 |
TaskTransactionOption |
Int32 |
タスクが使用するトランザクションのオプションです。 |
イベント ハンドラー用システム変数
次の表では、Integration Services がイベント ハンドラー用に提供するシステム変数について説明します。すべての変数がすべてのイベント ハンドラーで使用できるわけではありません。
システム変数 |
データ型 |
説明 |
イベント ハンドラー |
---|---|---|---|
Cancel |
Boolean |
エラー、警告、またはクエリのキャンセルが発生したときに、イベント ハンドラーが実行を停止するかどうかを示します。 |
OnError イベント ハンドラー OnWarning イベント ハンドラー OnQueryCancel イベント ハンドラー |
ErrorCode |
Int32 |
エラー識別子です。 |
OnError イベント ハンドラー OnInformation イベント ハンドラー OnWarning イベント ハンドラー |
ErrorDescription |
String |
エラーの説明です。 |
OnError イベント ハンドラー OnInformation イベント ハンドラー OnWarning イベント ハンドラー |
ExecutionStatus |
Boolean |
現在の実行ステータスです。 |
OnExecStatusChanged イベント ハンドラー |
ExecutionValue |
DBNull |
実行値です。 |
OnTaskFailed イベント ハンドラー |
LocaleId |
Int32 |
イベント ハンドラーが使用するロケールです。 |
すべてのイベント ハンドラー |
PercentComplete |
Int32 |
完了済みの作業の割合です。 |
OnProgress イベント ハンドラー |
ProgressCountHigh |
Int32 |
OnProgress イベントによって処理される操作の総数を示す、64 ビット値の上位部分です。 |
OnProgress イベント ハンドラー |
ProgressCountLow |
Int32 |
OnProgress イベントによって処理される操作の総数を示す、64 ビット値の下位部分です。 |
OnProgress イベント ハンドラー |
ProgressDescription |
String |
進行状況の説明です。 |
OnProgress イベント ハンドラー |
Propagate |
Boolean |
イベントが、上位レベルのイベント ハンドラーに反映されるかどうかを示します。
注
変数 Propagate の値は、パッケージの検証中は無視されます。 子パッケージ内で Propagate を False に設定しても、イベントは親パッケージに反映されます。親パッケージがイベントを処理しないようにするには、パッケージ実行タスクの DisableEventHandlers プロパティを True に設定します。
|
すべてのイベント ハンドラー |
SourceDescription |
String |
イベントを発生させたイベント ハンドラー内の実行可能ファイルの説明です。 |
すべてのイベント ハンドラー |
SourceID |
String |
イベントを発生させたイベント ハンドラー内の実行可能ファイルの一意識別子です。 |
すべてのイベント ハンドラー |
SourceName |
String |
イベントを発生させたイベント ハンドラー内の実行可能ファイルの名前です。 |
すべてのイベント ハンドラー |
VariableDescription |
String |
変数の説明です。 |
OnVariableValueChanged イベント ハンドラー |
VariableID |
String |
変数の一意識別子です。 |
OnVariableValueChanged イベント ハンドラー |
パラメーター バインドでのシステム変数の使用
パッケージの実行時に、システム変数の値をテーブルに保存すると役立つことがよくあります。たとえば、テーブルを動的に作成し、このテーブルを作成したパッケージ実行インスタンスの GUID をテーブル列に書き込むパッケージなどです。
システム変数を使用して、SQL 実行タスクが使用する SQL ステートメントのパラメーターにマップする場合、各パラメーター バインドのデータ型を、システム変数のデータ型に設定することが重要です。このように設定しないと、システム変数の値が誤って解釈されることがあります。たとえば、ExecutionInstanceGUID システム変数は文字列データ型で、実行中のパッケージのインスタンスの GUID の文字列表現を保持しますが、パラメーター バインドに GUID データ型を使用すると、パッケージのインスタンスの GUID は誤って解釈されます。
この規則は、ユーザー定義変数にも当てはまります。ただし、システム変数のデータ型は変更できないため、システム変数を使用する場合はそのデータ型に合わせた調整が必要ですが、ユーザー定義変数にはそれに比べると高い柔軟性があります。パラメーター バインドで使用するユーザー定義変数は、通常、マップ先パラメーターのデータ型と互換性のあるデータ型で定義します。
|