c# - 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 调用会修复它。
解决方案
我相信您的问题是将枚举器结果分配给变量。试试看
Dts.Variables["dailyFilesToDelete"].Value = fileListDelete;
在幕后,SSIS Foreach Enumerator 将调用 Enumerator 方法来使魔术发生。
推荐阅读
- wpf - 通过 VSTS 将 WPF 应用程序部署到 Hockeyapp 时出现错误“无法从构建中创建版本”
- pdf - 如何使用 VBScript 循环浏览 PDf 的页面
- office365 - 无法在 Office 365 Excel 和 Winword 应用程序中使用电子邮件快捷方式选项
- amazon-web-services - 是否值得在不同的 AWS 位置发布不同的站点语言?
- unit-testing - 使用 dotCover 命令行工具(JetBrains)的单元测试覆盖率 - 是否可以使用 x64 dll 测试运行此工具?
- selenium-webdriver - 外部代理 Titanium Web 代理?
- javascript - chrome扩展错误:拒绝执行内联事件处理程序,因为
- jpeg - 如何为 JEPG 霍夫曼值建立查找表
- unit-testing - 未执行任何测试(Play Framework)
- python - 有没有办法在字节正则表达式中使用 \b ?(Python)