我一直在努力重构一个 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 中。我最初传递的是列表本身,当我看到“变量不包含枚举器”错误时,我确信添加 GetEnumerator 调用会修复它。
最佳答案
我认为您的问题是将枚举器结果分配给变量。试试看
Dts.Variables["dailyFilesToDelete"].Value = fileListDelete;
在幕后,SSIS Foreach 枚举器将调用枚举器方法来实现奇迹。
关于c# - SSIS ForEach 来自变量枚举器,使用 C# 创建的列表 - 变量中的对象不包含枚举器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53561273/