【发布时间】:2018-11-26 23:18:22
【问题描述】:
我的工作是从各种非数据库源在网络文件夹上创建文件。在作业中,我将各种文件创建任务(包含在序列容器中)与移动文件任务(foreach 枚举器)隔离开来,以防止各种文件创建任务的优先约束蜘蛛网:
- 包含脚本组件的数据流任务,使用 C# 和 LDAP 从 Active Directory 中提取数据并将其输出到多个文件
- 从 SFTP 下载文件的脚本组件(实现 WinSCPNET.dll)
成功完成后,序列容器会转到 foreach 文件枚举器,将提取的文件移动到指示文件已准备好加载的文件夹 - 这里没有问题。
但是,生产中出现了一个间歇性问题,即 AD 连接在文件提取过程完成之前终止,从而导致部分文件(在测试中没有观察到这种情况,但应该考虑到 - 我的错)。所以,我在序列容器之外添加了一个 foreach 枚举器,它带有一个失败优先约束来删除这些部分提取文件。
在测试此修复程序期间,我将序列容器中的一项任务设置为报告失败。最初,序列容器报告成功,从而绕过了删除 foreach 枚举器。我尝试将 MaximumErrorCount 从 0 设置为 1,但这并没有导致预期的行为改变。然后,我将序列容器的 TransactionOption 从 supported 更改为 required,这似乎解决了问题。现在,该作业会移动完全提取的文件,同时删除在提取时报告和错误的文件。
我的问题是:这条路线是否存在潜在问题?我不确定为什么这个解决方案有效。在线文档讨论了与数据库连接的上下文中的 TransactionOption。但是,在这种情况下,没有与数据库的连接。我只是不想发布可能存在我不知道的潜在错误的补丁。
【问题讨论】:
标签: sql-server ssis