【问题标题】:How to get the variable value from child to parent in ssis 2008?如何在 ssis 2008 中获取从子到父的变量值?
【发布时间】:2014-07-31 16:04:00
【问题描述】:

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

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

请帮我解决这个问题。

问候, 拉维。

【问题讨论】:

    标签: ssis


    【解决方案1】:

    不要在 child 和 master pacakge 中创建变量,而是使用 child 中的 master 包变量作为读取变量并将值分配给该变量。然后在执行孩子后回到主人那里,变量被更新为子值。我尝试并成功了。

    感谢拉维库马尔

    【讨论】:

    • 该死的,它真的有效。多么丑陋的黑客 :D 但非常有用!谢谢,伙计。
    【解决方案2】:

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

    这可以使用子包中的脚本任务来实现。

    以下是步骤:-

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

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

    “之所以有效,是因为脚本任务在设计时不会验证在其 ReadOnlyVariables 和 ReadWriteVariables 属性中声明的变量名称。” )

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

     public void Main()
    
    {
      Dts.Variables["Parentvariable"].Value=Dts.Variables["Childvariable"].Value.ToString();
    
    }
    

    希望对您有所帮助...谢谢 :) !!!

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 不要在 child 和 master pacakge 中创建变量,而是使用 child 中的主包变量作为读取变量并将值分配给该变量。然后在执行孩子后回到主人那里,变量用孩子值更新。我试过了,成功了。谢谢 Ravikumar。
      猜你喜欢
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多