首页 > 解决方案 > SSIS ForEach 来自变量枚举器,使用 C# 创建的列表 - 变量中的对象不包含枚举器

问题描述

我一直在努力重构一个 SSIS 包,该包将一堆日志文件复制到我们网络上的一个文件夹中,检查目标文件夹中的所有文件,然后删除任何超过我们的保留策略的文件。除了上面的错误之外,它似乎应该一切正常。

大纲:对象类型的变量“dailyFilesToDelete”,由 ForEach 文件循环内的脚本任务填充。我简化了我的代码,添加了一个我创建的文件来测试这个新包,并尝试解决问题的核心。

var fileListDelete = new List<string>();
fileListDelete.Add(@"Q:\xpcttvcpc_live_Full_201912050000.bak");
Dts.Variables["dailyFilesToDelete"].Value = fileListDelete.GetEnumerator();
Dts.TaskResult = (int)ScriptResults.Success;

下一步是失败的 Foreach 循环。

枚举器:来自变量枚举器的 Foreach

枚举变量:User::dailyFilesToDelete

变量映射:User::deleteFileName

我怀疑问题在于我如何将字符串列表传递给dailyFilesToDelete。我最初是传入 List 本身,一旦我看到“变量不包含枚举器”错误,我确信添加 GetEnumerator 调用会修复它。

标签: c#visual-studio-2015ssis

解决方案


我相信您的问题是将枚举器结果分配给变量。试试看

Dts.Variables["dailyFilesToDelete"].Value = fileListDelete;

在幕后,SSIS Foreach Enumerator 将调用 Enumerator 方法来使魔术发生。


推荐阅读