SQL Server 2008 R2 - SSIS - OLE DB 目标 - 表或视图加载与快速加载



从我读到的:

表或视图数据访问模式一次将每一行作为事务提交。因此,使一个包传输 500 万行需要很长时间(30+ 分钟)。

快速加载数据访问模式允许在插入到目标时指定批处理行和提交大小。例如,插入 500 万条记录只需 2 分钟多一点。

现在出现了一个问题,其中加载到 DW 的 SSIS 包之一在 OLE DB 目标中使用表或视图数据访问模式。根据我的理解,这是为了获取它插入(错误约束)到错误记录表中的错误行。因此,我们有一个需要 30 多分钟的过程。反过来,对于相同的操作,快速加载将花费不到 2 分钟的时间。

如果我理解正确,快速加载将无法区分哪一行导致了批处理中的错误,进而使批处理完全失败?如果是这样,是否有另一种方法可以解决这种情况,即具有错误行的批处理由错误约束重定向,然后以将批处理中的良好记录发送到正确目标的方式处理到目标,同时仍将错误记录发送到错误日志表中?这样做是个好主意吗?关于所花费的时间,咬紧牙关说是不是更好?

提前谢谢你。

我看到在这种情况下所做的是一种级联故障方法。尝试以连续较小的批处理方式插入到 OLE DB 目标中,以尝试在开始单一实例插入之前通过批处理模式获取尽可能多的内容。

假设您的提交大小为 10k 行(任意数量、测试您的情况等)。将失败的行重定向到 OLE DB 目标,该目标仍处于快速加载模式,但提交大小为 2.5k 行。添加另一个 ole db 目标,提交大小可能为 100,然后有一个处于 RBAR 模式的最终目标。然后,您可以识别失败的行,并执行需要对它们执行的任何操作。

好吧,

我在快速加载模式下使用了一个目标,并将其错误行重定向到同一目的地表的另一个目标,但在逐行模式下。

它不像逐行那么慢,也没有快速加载那么快,但它对我有用!
我还有一个错误描述和真正的错误。

最新更新