Variables SSIS 2012“;“全球”;变量

Variables SSIS 2012“;“全球”;变量,variables,ssis,package,ssis-2012,Variables,Ssis,Package,Ssis 2012,我在尝试将数据传递到子包时遇到问题。 我的父包在一个数据库中运行,并对照另一个数据库检查它是否运行。目前我正在使用ForEach循环来实现这一点。然后,我可以通过一个唯一的id标识需要运行的行。然后我将其传递给相应的子包来处理它 我的问题是,将标识符写入4字节变量以使其在解决方案级别而不是包级别可用的最简单方法是什么。就我所见,我也无法将任何信息传递给儿童套餐 谢谢你的帮助! -D参数是您将在SSIS 2012项目部署模型中寻找的东西,它允许您将数据传递给子包。在子包中,需要添加一个参数 我创建

我在尝试将数据传递到子包时遇到问题。 我的父包在一个数据库中运行,并对照另一个数据库检查它是否运行。目前我正在使用ForEach循环来实现这一点。然后,我可以通过一个唯一的id标识需要运行的行。然后我将其传递给相应的子包来处理它

我的问题是,将标识符写入4字节变量以使其在解决方案级别而不是包级别可用的最简单方法是什么。就我所见,我也无法将任何信息传递给儿童套餐

谢谢你的帮助!
-D

参数是您将在SSIS 2012项目部署模型中寻找的东西,它允许您将数据传递给子包。在子包中,需要添加一个参数

我创建了5个包:主包和子包\u 0。。。儿童套餐4

总包

MasterPackage定义了两个变量:“Variable”(Int32)和“ChildPackage”。ChildPackage(String)应用了一个表达式
“ChildPackage”+(dt_wstr,1)@[User::Variable]+”.dtsx“
,变量值更改时,此字符串也会更改

添加一个Foreach循环(项枚举器,从0到4),我将当前值映射到名称不正确的变量“variable”

我定义了一个运行包的执行包任务。在参数绑定选项卡中,我将名为“Parameter”的子参数映射到变量“User::variable”,并在
PackageName
属性上应用一个表达式作为变量@[User::ChildPackage]。这将导致包的名称更改以反映变量的值

儿童套餐 在我的子包中,我创建了一个名为“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.

你是说软件包配置吗?这允许您持久化变量属性。太好了,非常感谢你的解释,这正是我想要的。