什么时候在 SSIS 中做多个包或数据流任务?
Posted
技术标签:
【中文标题】什么时候在 SSIS 中做多个包或数据流任务?【英文标题】:When to make multiple packages or data flow task in SSIS? 【发布时间】:2014-10-05 07:10:39 【问题描述】:如果这是一个愚蠢的问题,我很抱歉,因为我似乎无法在谷歌上找到答案,也许是因为其他人认为这很明显,但我有点困惑初学者。
所以,我正在练习制作一个小型数据仓库。 我在 SSIS 中有以下软件包: 1.从操作数据库复制到存档数据库 2.从存档复制到暂存区 3. 暂存区改造并入库
这些包由 SQL Server 中的作业控制。
我认为也可以只有一个包并将所有 1-2-3 作为单独的数据流任务放入该包中。我开始怀疑这一点,因为所有任务中只有一个数据流任务(在数据流任务本身中,有许多源-目的地的东西在发生)。
这方面的最佳做法是什么?你什么时候做不同的包,什么时候做多个数据流任务。
提前致谢。
【问题讨论】:
【参考方案1】:这是个人品味的问题。就个人而言,出于以下几个原因,我更愿意将它们分开,包括但不限于:
如果包 #2 由于架构漂移或其他原因而在某个时候中断,包 #3 仍将正常工作(至少对于某些表而言)。 在一个团队中,最好保持小型化,因为可能需要几个人从 CVS 签出不同的包才能同时处理它们。如果所有东西都放在一个巨大的包裹中,那简直是不可能的。 当一个仓库变得足够大(数百个表)时,通常可以将每个阶段拆分为几个包 - 例如,一个用于每个数据源/主题区域。更容易不迷失其中。此外,大型 SSIS 包非常笨重 - 我记得使用过一个重约 30 Mb 的包,这真的很痛苦。
【讨论】:
谢谢,有道理。 另外,通过拆分成多个包,您可以同时运行它们(假设不同的重点领域)。只需将维度加载从纯粹的串行包执行更改为混合运行串行执行的并行容器,我们的加载时间就大大减少了。 @billinkc,是的,但这并不总是可能的。例如,不同的包可能会更新相同的查找表。 这是您通过串行执行对包执行进行排序的地方。我不是对你的回答提出异议,只是提供一个额外的观点,说明为什么小型、专注的软件包很适合解决问题 严格来说,也可以在一个包中同时运行多个数据流 :) 当然,这显然是一个不太灵活的解决方案。以上是关于什么时候在 SSIS 中做多个包或数据流任务?的主要内容,如果未能解决你的问题,请参考以下文章
使用 SSIS 脚本任务将数据从多个 SQL 表导出到不同的平面文件