如何在ssis 2008中获取从child到parent的变量值?

时间:2012-09-21 09:47:38

标签: ssis

在我的场景中更新从子节点传递到父节点的表值 我正在使用EPT(执行包任务)来调用子包,并且在子包中的一个变量值将在父包中更新。所以我使用的是父包配置,但是没有在父包级别中填充值。

在子级和父级包级别中,变量名称在我的情况下应该相同。

请帮我解决这个问题。

此致 拉维。

3 个答案:

答案 0 :(得分:2)

不要在child和master pacakge中创建变量,而是将child中的master package变量用作read变量,并为该变量赋值。然后在执行完孩子后回到主人那里,变量用子值更新。我试过并继承了。

感谢Ravikumar

答案 1 :(得分:2)

我们只能在运行时将子变量值分配给父变量。 由于父pakage充当子包装的容器,因此只能在运行时访问父变量。

这可以通过子语言中的脚本任务来实现。

以下是步骤: -

1-在父包装中创建变量。 2-在子包装中创建子变量。 3-在子包装中打开脚本任务。 4 - 将ReadOnlyVariables变量选项指定为子变量。 5将ReadWriteVariables变量选项指定为父变量。

(**注意: - 父变量在ReadWriteVariables变量选项中不可用但dnt担心只需手动给出名称示例: - " User :: ParentVariable"

"这是有效的,因为脚本任务不会验证在其ReadOnlyVariables&中声明的变量名称。设计时的ReadWriteVariables属性。"

6-编辑脚本任务并使用以下代码将子变量值分配给父变量。

 public void Main()

{
  Dts.Variables["Parentvariable"].Value=Dts.Variables["Childvariable"].Value.ToString();

}

希望它有所帮助......谢谢:) !!!

答案 2 :(得分:0)

我认为使用父包配置在子包中设置变量就像通过值而不是通过引用将变量传递给函数。换句话说,您将在执行时将子变量的值设置为父包中变量的值。由于这两个项目是单独的可执行文件,因此变量的范围不能(至少到2008年)传递给子项中的父项。您需要查看将数据存储在其他位置(可能将其存储到表中),并在控制返回到父包后从该位置检索数据。我相信你在2012年可能会有更高级别的范围变量,但我还没有把任何软件包移到那个级别,所以我不得不推迟那些可能使用过2012的人。