忽略 SSIS 的 OLE DB 目标中的重复记录

cra*_*aig 4 sql-server ssis sql-server-2012 ssis-2012

我正在使用 OLE DB 目标用来自 Web 服务的值填充表。

该软件包将被安排在前一天的凌晨运行。但是,如果此操作失败,则可以手动执行该包。

我担心的是,如果操作员选择与现有数据重叠的日期范围,则整个包将失败(已验证)。

我会喜欢的:

  • 插入缺失值(如果没有重复,按预期工作)
  • 忽略重复项;不会导致包失败;引发可由 Windows 应用程序日志捕获的异常(记录为警告)
  • 收集成功插入的记录数和重复数

如果重要,我正在使用Data access mode=Table or view - fast load

在此处输入图片说明

对如何实现这一目标的建议表示赞赏。

bil*_*nkc 6

那不是特征。

如果您不想要错误(重复),那么您需要防御它 - 就像您使用自己喜欢的语言所做的那样。您不依赖于错误处理,而是测试是否存在导致错误的事物(查找转换以识别目标中行的存在),然后过滤掉重复项(重定向无匹配输出)。

您绝对不应该实施的技术解决方案

将访问模式从“表或视图名称 - 快速加载”更改为“表或视图名称”。这将插入的方法从基于批量/集合的操作更改为单例插入。通过一次插入一行,这将允许 SSIS 包评估每行保存的成功/失败。然后您需要进入高级编辑器,您的屏幕截图,并将错误处理从失败组件更改为Ignore Failure

不应使用此解决方案,因为它会产生较差的性能,产生不必要的工作负载,并且有可能掩盖除“重复”之外的其他保存错误 - 例如违反参照完整性