【问题标题】:Issue with SSIS Lookup Cache Mode and NULL valuesSSIS 查找缓存模式和 NULL 值的问题
【发布时间】:2014-07-18 14:54:19
【问题描述】:

我希望有人可以帮助我。

我的问题与 SISS 有关,特别是查找数据流项以及它如何根据所选缓存模式处理 NULL 值。

我有一个使用类型 2 更新方法的非常大的数据集(72 列,37,000,000 条记录)。

我在数据流中使用查找来识别对现有记录的更新,我匹配所有相关字段,如果所有字段都匹配,那么显然传入记录与表中的现有记录匹配,因此被丢弃。如果没有匹配,则执行类型 2 更新。

由于数据集较大,服务器资源有限,如果将 Lookup 的 Cache Mode 设置为 Full Cache,会导致进程因内存不足而失败;因此,我不得不将缓存模式切换为部分缓存。这解决了内存问题,但会导致另一个问题。由于某些原因,在部分缓存模式下,表中的 NULL 值与传入记录中的 NULL 值不匹配,而如果将缓存模式设置为完全缓存,则匹配。

这种行为看起来很奇怪,我无法在任何地方找到它的记录。一种方法是合并 NULL 值,但这是我想避免的。

任何帮助将不胜感激。

干杯 本

【问题讨论】:

  • 您真的需要在您的查找中撤回所有 72 列吗?遗憾的是,我不得不定期拉回可比较的数据量以进行查找,但我能够将其提炼为 2 个哈希值 - 我的匹配键和更改检测键
  • 我想我正在寻找一个解释,为什么 NULL 在完全缓存模式下匹配,但在部分缓存模式下却不匹配。我想你不知道为什么会这样?
  • 为什么?因为msdn 文档声明它们在完全缓存模式下进行,而不是在部分/无。他们做出这个设计决定的原因超出了我的工资等级

标签: caching ssis null lookup


【解决方案1】:

无缓存和部分缓存模式使用数据库引擎进行匹配。在大多数数据库引擎(包括 SQL Server)中,NULL 不等于 NULL。 NULL 表示未知值,因此您将永远无法匹配。对所有可以为空的 col 做一个 isnull

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多