【问题标题】:SSIS trigger failure if match found如果找到匹配项,则 SSIS 触发器失败
【发布时间】:2014-03-21 14:23:34
【问题描述】:

如果任何传入数据的 [DateId] 已经存在于事实表中,我需要防止将数据加载到我的事实表中。 [DateId] 字段是一个整数值。

SSIS 中的查找操作允许您在不匹配时失败,但如果找到任何匹配项,我实际上需要失败。匹配时如何让包失败?

【问题讨论】:

  • 您真的希望包失败,还是只希望不匹配项从查找中流出?
  • 嗯,我希望包因为数据被提取的方式而失败,这种情况永远不会发生。只有当用户放置一个包含已拉入记录的文件时才会发生这种情况。在这种情况下,他们提供了可疑的源数据。

标签: ssis sql-server-2012 etl


【解决方案1】:

如果您只想让不匹配项通过查找,只需使用“查找不匹配输出”连接到数据流中的下一个组件。

由于查找匹配输出没有连接到任何东西,所有这些数据都将“停止”在那里。这相当于 SQL 模式 LEFT JOIN WHERE --some left column-- IS NULL

【讨论】:

  • 如果我这样做,那么这个过程不会失败,对吗?它会阻止记录继续,但任务会完成吗?
  • 没错,如果每条记录都匹配,任务仍然会完成,只插入0条记录。
【解决方案2】:

使用合并连接(带有条件拆分)或带有不匹配输出的查找(不将匹配项与任何内容挂钩)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2017-06-30
    相关资源
    最近更新 更多