SSIS 2012 pass values from child package to parent with project deployment model

后端 未结 5 461
春和景丽
春和景丽 2021-01-02 06:15

i\'m using the new project deployment model.

I have a master package called ETL. The first thing my ETL package does is run a package called get SFTP files as shown

5条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-02 06:54

    Here is a way to pass a value from a child package variable to a parent package variable.

    Script Task: (in child package)

    // Populate collection of variables.
    // This will include parent package variables.
    Variables vars = null;
    Dts.VariableDispenser.GetVariables(ref vars);
    
    // Lock the to and from variables. 
    Dts.VariableDispenser.LockForWrite("User::MyParentPackageVar");
    Dts.VariableDispenser.LockForRead("User::MyChildPackageVar");
    
    // Apparently need to call GetVariables again after locking them.
    // Not sure why - perhaps to get a clean post-lock set of values.
    Dts.VariableDispenser.GetVariables(ref vars);
    vars["User::MyParentPackageVar"].Value = vars["User::MyChildPackageVar"].Value;
    
    vars.Unlock();
    

    This code was actually from a pre-2012 SSIS Package that I just finished upgrading to SSIS for SQL Server 2012 (in Visual Studio 2012), and converted to project deployment model.

    Initially, the execution died (after a lengthy delay) on the variable assignment line. But then I added the "User::" prefix, which apparently was necessary for at least one, but not all of the variables I was assigning this way. The prefix was not necessary in SSIS for SQL Server 2008.

提交回复
热议问题