【问题标题】:SSIS no-match lookup? SQL server integration services - prevent duplicate rowsSSIS不匹配查找? SQL 服务器集成服务 - 防止重复行
【发布时间】:2015-06-15 04:13:58
【问题描述】:

在 ssis 2012 中,假设我只是将客户数据从一个数据库源复制到一个数据库目标(两者都是不同的数据库实例,一个无法“看到”另一个)。 如何防止添加之前已经添加的客户数据。换句话说,当我重新运行任务时,它不应该添加客户两次或更多(仅添加之前失败的客户)。我们在目标客户表中提供了非唯一参考,例如'SourceCustomerID' 是非唯一的! 所以我们不能依赖 Destination 表中的某些唯一索引,如果可以的话,我不想这样(会导致失败)...

根据以下问题添加:存在唯一标识目标表中的数据的列,为此我们需要这些列,但这些也不是作为唯一索引实现的,我也不想让作业(或行)失败像这样。我想防止以受控方式添加这些行。

我尝试了查找组件,玩“查找无匹配输出”等...还没有运气。

任何想法如何使用 SSIS 原则来实现这一点?

最好的问候 巴特。

【问题讨论】:

  • 我将您的问题解读为“当我没有任何可以唯一标识重复的内容时,如何防止重复?”当然,这不是你要问的
  • 您的意思是不是单个字段,而是多个字段的组合使该行唯一?
  • 感谢您的回复。有一个字段可以唯一标识重复项,但该字段不是唯一约束。但如果是这样,我想在有比赛时默默地跳过(或以友好的方式登录)。当处理中出现错误时,我想修复这些错误,然后重新运行而不创建重复项(现在正在发生)。
  • 您实际上应该能够使用查找组件来执行此操作。这种方法的实际问题是什么?
  • 当有“不匹配”时我想添加...当有匹配时我什么都不想做...它似乎可以工作,但最终会添加重复项

标签: sql-server ssis integration


【解决方案1】:

使用 SCD 组件 https://msdn.microsoft.com/en-us/library/ms141715.aspx

您映射将检查现有记录的业务密钥,您可以插入/更新。您可以将其更改为仅插入。

【讨论】:

  • 根据我目前阅读的规范,这是可以完成这项工作的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 2017-04-30
相关资源
最近更新 更多