2012-09-26 55 views
4

我是SSIS的新手,我正在撰写我的第一个SSIS包。SSIS多表插页与联盟全部

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

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

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

任何帮助,将不胜感激。

+0

问题没有意义.... –

回答

1

从性能角度来看,如果您将UNION结果一起放入SSIS中,并且将它们插入到数据库,因为你只能创建一个到实例/数据库的连接,并且根据脏页面何时写入光盘,这是可能的,但决不能保证头部可能需要更少的次数移动主轴。

我认为这是一个更高的重要性这里是什么是自定义日志记录?如果日志记录记录了你的包裹有多远,在某个阶段更新了多少记录等等,那么我会强烈建议UNION不要包裹,因为以下原因将它们全部插入。

想象一下当程序包中途崩溃时,您的任务是首先诊断问题,然后修复一些由于失败而损坏的数据。如果您在最后写入所有日志条目,并且该包尚未完成,则日志条目将不会写入,您的任务将更加困难。

相反,我会设置ADO连接管理器以保留相同的连接。这样,连接就会一直保持打开状态,并且不会有必须重新连接的开销。

+0

非常好的一点! –

0

我觉得Union All再一次插入是比较好的。

它会让你的ssis清晰并获得更好的表现。 (据我所知,SSIS将使用服务器资源,而不是数据库资源,对吗?)

+0

“SSIS将使用服务器资源而不是数据库资源” - 这是什么意思? –

+0

例如,您在Server-S中运行SSIS,所有联合作业都将使用Server-S的资源。 – Guoliang

+0

我不确定这个逻辑是否正确。 –