パラメーターは、子パッケージにデータを渡すことができるようにするために、SSIS 2012 のプロジェクト配置モデルで探しているものです。子パッケージでは、パラメーターを追加する必要があります。
MasterPackage と ChildPackages_0 ... ChildPackage4 の 5 つのパッケージを作成しました。
マスターパッケージ
MasterPackage には、「Variable」(Int32) と「ChildPackage」の 2 つの変数が定義されています。ChildPackage (文字列) には適用された式が"ChildPackage_" + (dt_wstr,1) @[User::Variable] + ".dtsx"
あります Variable の値が変化すると、この文字列も変化します。
Foreach ループ (Item 列挙子、0 から 4 まで) を追加し、現在の値を不適切な名前の変数 "Variable" にマップします。
パッケージを実行するパッケージ実行タスクを定義しました。[パラメーター バインド] タブで、"Parameter" という名前の子パラメーターを変数 "User::Variable" にマップしPackageName
、変数 @[User::ChildPackage] になるようにプロパティに式を適用しました。これにより、パッケージの名前が変数の値を反映するように変更されます。
ChildPackage_X
私の子パッケージでは、「Parameter」という名前の単一のパラメーターを作成し、デフォルト値 -1 を割り当てて、Required
属性をチェックしました。子パッケージには、パラメーターの値を発行するスクリプト タスクが含まれているだけです。System::PackageName, $Package::Parameter
そのスクリプトの読み取り専用パラメーターのリストに追加しました。そのコードは次のとおりです
public void Main()
{
// System::PackageName, $Package::Parameter
bool fireAgain = true;
string myVariableName = "$Package::Parameter";
int myVariableValue = -1;
string packageName = Dts.Variables["System::PackageName"].Value.ToString();
myVariableValue = (int)Dts.Variables[myVariableName].Value;
Dts.Events.FireInformation(0, string.Format("{0} Script task", packageName), string.Format("{0}:{1}", myVariableName, myVariableValue), string.Empty, 0, ref fireAgain);
Dts.TaskResult = (int)ScriptResults.Success;
}
出力
マスター パッケージを実行した後、次の予想される出力を受け取りました。それぞれの子パッケージは順番に起動し、スクリプト タスクは、値がパラメーターを介して期待どおりに渡されたことを示しました。
SSIS package "C:\sandbox\SO_SSIS\SO_SSIS\MasterPackage.dtsx" starting.
Executing ExecutePackageTask: C:\sandbox\SO_SSIS\SO_SSIS\ChildPackage_0.dtsx
Information: 0x0 at SCR Emit parameter, ChildPackage_0 Script task: $Package::Parameter:0
Executing ExecutePackageTask: C:\sandbox\SO_SSIS\SO_SSIS\ChildPackage_1.dtsx
Information: 0x0 at SCR Emit parameter, ChildPackage_1 Script task: $Package::Parameter:1
Executing ExecutePackageTask: C:\sandbox\SO_SSIS\SO_SSIS\ChildPackage_2.dtsx
Information: 0x0 at SCR Emit parameter, ChildPackage_2 Script task: $Package::Parameter:2
Executing ExecutePackageTask: C:\sandbox\SO_SSIS\SO_SSIS\ChildPackage_3.dtsx
Information: 0x0 at SCR Emit parameter, ChildPackage_3 Script task: $Package::Parameter:3
Executing ExecutePackageTask: C:\sandbox\SO_SSIS\SO_SSIS\ChildPackage_4.dtsx
Information: 0x0 at SCR Emit parameter, ChildPackage_4 Script task: $Package::Parameter:4
SSIS package "C:\sandbox\SO_SSIS\SO_SSIS\MasterPackage.dtsx" finished: Success.