スクリプト コンポーネントでの変数の使用
変数には、パッケージとそのコンテナー、タスク、およびイベント ハンドラーが実行時に使用できる値が格納されます。 詳細については、「 Integration Services (SSIS) の変数」を参照してください。
カスタム スクリプトで既存の変数を読み取り専用または読み取り/書き込みアクセスに使用できるようにするには、Script 変換エディターの Script ページのReadOnlyVariables
フィールドとReadWriteVariables
フィールドに変数のコンマ区切りリストを入力します。 変数名の大文字と小文字は区別されることに注意してください。 Value
プロパティを使用して、各変数に対する読み取りおよび書き込みを行います。 スクリプトが実行時に変数を処理すると、スクリプト コンポーネントは状況に応じて自動的に必要なロックを処理します。
重要
ReadWriteVariables
のコレクションは、PostExecute
メソッド内でのみ、パフォーマンスを最大化し、ロックによる競合のリスクを最小限に抑えるために使用できます。 したがって、データ行を処理するたびにパッケージ変数の値を直接増やすことはできません。 このような場合、ローカル変数の値を増やし、すべてのデータが処理された後で、PostExecute
メソッド内でパッケージ変数の値をローカル変数の値に設定します。 また、VariableDispenser プロパティを使用してこの制限を回避できます。この方法については、このトピックの後半で説明します。 ただし、各行が処理されているときにパッケージ変数に直接書き込みを行うと、パフォーマンスに悪影響を与え、ロックによる競合のリスクが増えます。
[スクリプト変換エディター] の [スクリプト] ページの詳細については、「スクリプト コンポーネント エディターでのスクリプト コンポーネントの構成」および「スクリプト変換エディター ([スクリプト] ページ)」を参照してください。
スクリプト コンポーネントは、Variables
プロジェクト アイテム内に、ComponentWrapper
コレクション クラスを作成します。ここには、構成済みの各変数の値に対して、変数自体と同じ名前を持つ、厳密に型指定されたアクセサー プロパティがあります。 このコレクションは、Variables
クラスの ScriptMain
プロパティを介して公開されます。 アクセサー プロパティにより、変数の値が読み取り専用か読み取り/書き込み用かが決まります。 たとえば、MyIntegerVariable
という整数型の変数を ReadOnlyVariables
一覧に追加した場合、次のコードを使用して、この値をスクリプト内で取得できます。
Dim myIntegerVariableValue As Integer = Me.Variables.MyIntegerVariable
スクリプト コンポーネントで変数を扱うには、Me.VariableDispenser
を呼び出してアクセスする VariableDispenser プロパティを使用することもできます。 この場合には、変数の型指定された名前付きのアクセサー プロパティを使用せずに、直接的に変数にアクセスします。 VariableDispenser を使用する場合は、コード内で、ロック セマンティクスと、変数値のデータ型のキャストの両方を処理する必要があります。 デザイン時には使用できないが、実行時にプログラムによって生成される変数を扱う必要がある場合は、名前付きの型指定されたアクセサー プロパティではなく、VariableDispenser プロパティを使用する必要があります。
Integration Services を最新の状態に保つ
Microsoft からの最新のダウンロード、記事、サンプル、ビデオ、およびコミュニティから選択したソリューションについては、MSDN の Integration Services ページを参照してください。
MSDN の Integration Services のページを参照する
これらの更新が自動で通知されるようにするには、ページの RSS フィードを定期受信します。