gpt4 book ai didi

ssis - 如何以编程方式在 SSIS 中使用 "Foreach From Variable Enumerator"创建 foreach 循环

转载 作者:行者123 更新时间:2023-12-05 03:05:17 24 4
gpt4 key购买 nike

我正在尝试使用 DTS 运行时类动态创建 SSIS 包。我正在尝试使用“Foreach From Variable Enumerator”创建一个 foreach 循环,其中我的变量包含一个带有必要集合的 ArrayList。

我无法找到一种方法来设置变量(在枚举器配置下,如在 VS 中所见),该变量将保存要循环的集合。

我没有在 forEachLoop.ForEachEnumerator 中找到任何选项。我也无法将 forEachEnumeratorHost.InnerObject 转换为我想要的枚举器。我在 MSDN 上找到了一个类 Microsoft.SqlServer.Dts.Runtime.Enumerators.FromVar.ForEachFromVarEnumerator。但是我无法在 Enumerators 中找到 FromVar 类。我是不是漏掉了什么严重的东西?

有没有人这样做过?我很难相信可以通过 Visual Studio UI 轻松完成的事情不能以编程方式完成。

下面是我现在的代码...

ForEachLoop forEachLoop = p.Executables.Add("STOCK:FOREACHLOOP") as ForEachLoop;

// Create a VariableMappings and VariableMapping objects.
ForEachVariableMapping forEachVariableMapping = forEachLoop.VariableMappings.Add();

// Create a mapping between the variable and its value.
forEachVariableMapping.VariableName = @"User::CurrentTableName"; forEachVariableMapping.ValueIndex = 0;

ForEachEnumeratorInfo forEachEnumeratorInfo = runtimeApp.ForEachEnumeratorInfos["Foreach From Variable Enumerator"]; ForEachEnumeratorHost forEachEnumeratorHost = forEachEnumeratorInfo.CreateNew();

最佳答案

您快完成了...我认为您忘记设置 forEachLoop 对象的 ForEachEnumerator 属性。

ForEachLoop forEachLoop = p.Executables.Add("STOCK:FOREACHLOOP") as ForEachLoop;
ForEachEnumeratorInfo forEachEnumeratorInfo = runtimeApp.ForEachEnumeratorInfos["Foreach From Variable Enumerator"];
ForEachEnumeratorHost forEachEnumeratorHost = forEachEnumeratorInfo.CreateNew();
//forEachEnumeratorHost.CollectionEnumerator = false; // true or false; set accordingly.

// cast the inner object to ForEachFromVarEnumerator
ForEachFromVarEnumerator = forEachEnumeratorHost.InnerObject as ForEachFromVarEnumerator;

// Now that you have the ForEachFromVarEnumerator, set its properties.
// For variable name, do not forget the variable's name space and the variable name (separated by ::)
ForEachFromVarEnumerator.VariableName = "var_namespace" + "::" + "var_name";

// finally.....
forEachLoop.ForEachEnumerator = forEachEnumeratorHost; // DO NOT FORGET THIS. Here you are setting what the actual enumerator would be

关于ssis - 如何以编程方式在 SSIS 中使用 "Foreach From Variable Enumerator"创建 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51165303/

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