哪种方法更适合保存 SSIS 中的错误

Which approach is better for saving the error in SSIS

我使用 SSIS 传输数据,我使用 SQL server 2016 我需要在其中使用一些查找组件我的 DataFlow 任务,如果找不到匹配项,我应该将记录作为信息保存在一个 table 中。 这意味着如果我无法为每个 Lookup 组件找到相关记录,我必须将该行保存在 table 中。

我必须输入 DataFlow 设计类型,我想知道哪个比其他设计更好?

您可以在下面的图片中看到数据流设计。

在此模式中,我使用了两个单独的 OLE DB 目标,但在这两个模式中,我都将信息保存在同一个 Table 中。

在此模式中,我使用 Union All Component 合并所有记录并将它们同时保存在目标 table 中。

我想知道哪种设计比另一种更好,每种设计的优缺点是什么?

为了更好的性能和其他事情,最好使用 UNION ALL 因为:

  1. UNION ALL 正在打开一个与数据库的连接(另一种情况是为每个 oledb 目标打开一个连接)

  2. 如果在 LookUp 1 上打包失败,由 Lookup 生成的数据将被插入到 OleDB Destination 并且打包失败,因此重新启动数据时可能重新插入。

  3. 为同一个 Table 创建多个 OLEDB Destination 不是一个好主意,由于 (Table Exclusive-Lock) 每个插入都会等待其他人完成