gpt4 book ai didi

.net - 如何以编程方式将 ADO 变量设置为 SSIS 中的 ForEach 循环枚举器?

转载 作者:行者123 更新时间:2023-12-04 15:40:52 25 4
gpt4 key购买 nike

我正在使用 SSIS 对象模型以编程方式创建 SSIS 包。

我想使用我创建为枚举器的 ADO 对象变量来创建 ForEach 循环。如何将变量分配给枚举器并在循环内使用其值?

最佳答案

假设:

  • 您有一个 ADO 对象变量 用户::ADOObject 包含两列键和值。

  • 代码:
    using Microsoft.SqlServer.Dts.Runtime.Enumerators;
    using Microsoft.SqlServer.Dts.Runtime;
    using Microsoft.SqlServer.Dts.Runtime.Enumerators.ADO;

    ForEachLoop f = new ForEachLoop();
    ForEachADOEnumerator ado_enum = (ForEachADOEnumerator) f.ForEachEnumerator.InnerObject;
    ado_enum.Type = ADOEnumerationType.EnumerateRowsInFirstTable;
    ado_enum.DataObjectVariable = "User::ADOObject";

    f.VariableMappings.Add();
    f.VariableMappings[0].VariableName = "User::Key";
    f.VariableMappings[0].ValueIndex = "Key";

    f.VariableMappings.Add();
    f.VariableMappings[1].VariableName = "User::Value";
    f.VariableMappings[1].ValueIndex = "Value";

    如果您正在使用 EzAPI ,首先您必须修改 EzAPI 源,因为 EzForEachLoop 类不公开 变量映射 盒子外面。将此属性添加到 EzExecutables.cs 中的 EzForEachLoop 类:
    public ForEachVariableMappings VariableMappings
    {
    get { return (m_exec as ForEachLoop).VariableMappings; }

    }

    然后在您的代码中像这样初始化 EzForEachLoop(假设这是在自定义包类中调用的,构造函数中的“this”参数指的是该包):
    EzForEachLoop ezf = new EzForEachLoop(this); 
    ezf.Initialize(ForEachEnumeratorType.ForEachADOEnumerator);

    现在 ezf 的枚举器和变量映射可以以与 ForEachLoop 相同的方式设置 f 以上。

    关于.net - 如何以编程方式将 ADO 变量设置为 SSIS 中的 ForEach 循环枚举器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617881/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com