4

我是 SSIS 新手,正在编写我的第一个 SSIS 包。

在我的包中,数据流中有几个转换阶段,每个阶段都有一个脚本组件将记录(某种自定义日志)插入到 ADO.NET 目标。

我正在使用多个指向同一个数据库中同一个表的 ADO.NET 目标组件。

我想知道这是否是一种正确的方法,或者我是否应该使用 Union ALL 并一次插入所有记录。

任何帮助,将不胜感激。

4

2 回答 2

1

从性能的角度来看,如果您在 SSIS 中将结果合并在一起并将它们插入到数据库中,您希望获得非常小的性能提升,因为您只会创建一个到实例/数据库的连接,具体取决于何时脏页被写入磁盘是可能的,但绝不保证磁头可能需要在主轴上移动的次数更少。

我认为这里更重要的是自定义日志记录是什么?如果日志记录记录了您在包中的距离、在某个阶段更新了多少记录等,那么我强烈建议不要在包中使用 UNION,因为以下原因在最后将它们全部插入。

想象一下这样一种情况,当包裹在中途掉落时,您的任务是首先诊断问题,然后修复一些因故障而损坏的数据。如果你把所有的日志都写在最后,而打包还没有完成,那么日志就不会被写,你的任务就会困难很多。

相反,我会将 ADO 连接管理器设置为保留相同的连接。这样,连接将始终保持打开状态,您将不必重新连接。

于 2012-09-26T06:45:09.270 回答
0

我认为 Union All 然后一次 insert all 更好。

它将使您的 ssis 清晰并获得更好的性能。(据我所知,SSIS 将使用服务器资源而不是数据库资源,对吧?)

于 2012-09-26T04:08:11.383 回答