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

时间:2017-03-04 21:24:23

标签: sql-server design-patterns ssis etl bids

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

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

您可以在下面的图像中看到DataFlow设计。

在此模式中,我使用两个单独的 OLE DB目标,但在两者中,我将信息保存在同一个表中。 enter image description here

在此模式中,我使用Union All Component将所有记录合并,并在Destination表中同时保存它们。 enter image description here

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

1 个答案:

答案 0 :(得分:2)

为了获得更好的性能和其他方面,最好使用UNION ALL,因为:

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

  2. 如果LookUp 1 Lookup导致的数据包失败,OleDB Destination导致的数据将被插入OLEDB Destination并且程序包失败,因此重新启动数据时可能会重新插入。

  3. 为同一个表创建多个element.send_keys不是一个好主意,由于(Table Exclusive-Lock)每个插入都会等待,这会降低性能其他人要完成