我希望有人可以帮助我。
我的问题与SISS有关,特别是查找数据流项以及它如何处理NULL值,具体取决于所选的缓存模式。
我有一个非常大的数据集(72列,37,000,000条记录),它使用了Type 2更新方法。
我在数据流中使用查找来识别对现有记录的更新,我在所有相关字段上匹配,如果所有字段匹配,那么显然传入记录与表中的现有记录匹配,因此它被丢弃。如果没有匹配,则执行类型2更新。
如果查找的缓存模式设置为完全缓存,则由于数据集较大且服务器资源有限,导致进程因内存不足而失败;因此,我不得不将缓存模式切换到部分缓存。这解决了内存问题,但会导致另一个问题。出于某种原因,在部分缓存模式下,表中的NULL值与传入记录中的NULL值不匹配,而如果缓存模式设置为完全缓存,则表示该值。
这种行为很奇怪,我无法在任何地方找到它。绕过它的一种方法可能是合并NULL值,但这是我想避免的。
非常感谢任何帮助。
干杯 本
答案 0 :(得分:1)
无缓存和部分缓存模式使用数据库引擎进行匹配。在大多数数据库引擎(包括SQL Server)中,NULL不等于NULL。 NULL表示未知值,因此您永远不会得到匹配项。在你所有可空的col上做一个无所事事