根据我的分析,我们数据仓库的完整维度模型需要从 200 多个源表中提取。其中一些表将作为增量加载的一部分被提取,而其他表将被完全加载。
需要注意的是,我们有大约 225 个源数据库,它们都具有相同的模式。
据我所知,在 SSIS 中使用 OLE DB 源和 OLE DB 目标构建简单的数据流需要在设计时确定列和数据类型。这意味着我最终将获得 200 多个仅用于提取的数据流。
从可维护性的角度来看,这让我觉得这是一个大问题。如果我需要对提取代码进行某种彻底的更改,我将不得不修改 200 个不同的数据流。
另一种选择是,我编写了一个小脚本,它读取我想从一组元数据表中提取的源数据库、表名和列。代码在多个循环中运行,并使用动态 SQL 通过链接服务器和 OPENQUERY 从源表中提取。
根据我的测试,这仍然不如使用具有 OLEDB 源和目标的 SSIS 数据流快。所以我想知道我有什么样的选择。到目前为止的想法包括:
- 使用EZAPI以编程方式生成具有简单数据流的 SSIS 包。要提取的表和列将来自前面提到的相同元数据表。
- 购买第三方软件(动态数据流组件)
解决这个问题的最佳方法是什么?当谈到 .NET 编程时,我是一个初学者,因此仅掌握基础知识所需的时间也是一个问题。
我不想在一个包中包含 200 个数据流。仅仅打开和验证所花费的时间会让你在你的时间之前变老。
EzAPI 很有趣,但是如果您是 .NET和SSIS 的新手,哦,不,您不希望这样。我认为您将花费更多时间来学习 SSIS 对象模型并可能与 COM 打交道,而不是实际完成工作。
由于我很懒,我会将 BIML 作为您未列出的免费选项插入。从 SO https://stackoverflow.com/questions/13809491/generating-several-similar-ssis-packages-file-data-source-to-db/13809604#13809604的答案
我认为这也可能是您的一种方法。你定义你的 BIML 来描述你的包应该如何表现,然后生成它们。在您描述在哪里进行更改并且必须修复 N 个包的场景中,不,您修复了问题的定义并重新生成包。
或者,如果您已经对该框架足够熟悉,则可以使用 EzAPI 之类的东西来修复所有损坏的东西。哎呀,既然您已将其标记为 2005,如果您需要对现有软件包进行大规模修改,您也可以尝试一下PacMan 。
SSIS 设计注意事项
一般来说,我尽量让我的包专注于解决单个任务(加载销售数据)。如果这需要 2 个数据流,那就这样吧。我讨厌继承的是导入导出向导中的一个包,在一个包中包含许多不相关的数据流。将它们分解成可以解决非常具体问题的东西。随着表面积的减少,它使未来增强的风险降低。另一个好处是我可以
DimProducts
在我的奴才处理加载SnowflakeFromHell
包的同时进行加载。然后使用主包来编排子工作流程。我知道你在 2005 年,但 SQL Server 2012 发布的 SSIS 是猫的睡衣。我喜欢项目部署模型以及它允许包之间的紧密集成。
TSQL 与 SSIS(我的故事)
至于纯 TSQL 方法,在之前的作业中,他们使用了 73 步作业将所有 Informix 数据复制到 SQL Server 中。它通常需要大约 9 个小时,但可能会延长到 12 个小时左右。在他们购买了新的 SAN 后,它下降到大约 7 个多小时。相同的逻辑过程,在 SSIS 中重写是一致的不到 2 小时。很容易,缩短那个时间的最大因素是我们使用 SSIS 获得的“免费”并行化。代理作业以串行方式运行所有这些任务。主包基本上将表划分为处理单元(“运行复制表 1”、表 2 等的 5 个并行序列化任务集),我试图将存储桶划分为准相等大小的工作单元。这允许 60 个左右的查找参考表快速填充,然后处理速度减慢,因为它进入“
使用 SSIS 对我来说的其他好处是,我可以获得“免费”配置、日志记录和对 .NET 库的访问权限,以获取我需要敲入圆孔的方形数据。我认为由于野兽的图形特性,维护(通过维护)SSIS 包比纯 TSQL 方法更容易。
与往常一样,您的里程可能会有所不同。
您提到您有 200 个源表和 225 个数据库。我假设 200 个源表是所有 225 个数据库中所有表的计数(因为如果每个数据库中有 200 个表,那么总表数将达到 45000)。您还提到数据库的架构对于 225 个数据库是相同的。
您可以先为 1 个数据库构建 SSIS 包,然后在安排作业时,您可以使用包配置更改数据库连接字符串(如果您的 SQL 2005,那么您将使用包部署模型)。正如前面的回复中提到的,SQL 2012 提供了使用项目部署模型配置参数的新方法。
您可以在此处获取有关 SSIS 包配置的更多信息 http://www.sql-server-performance.com/2007/package-configuration-2005/
您可以从此处获取有关使用项目参数的更多信息, https://stackoverflow.com/questions/15206184/how-to-configure-ssis-2012-project-to-run-under-different-environment-configurat