组织200多个表导入项目的最佳实践

时间:2012-11-20 08:41:29

标签: ssis project-organization ssis-data-flow

这个问题将是关于SSIS项目中型进口最佳实践的纯粹组织问题。

所以我有源数据库,不断丰富新数据。然后我有一个临时数据库,我有时会从源数据库加载数据,这样我就可以处理源数据库的副本并迁移当前系统。我实际上是使用SSIS Visual Studio项目来导入这些数据。

我的问题是我意识到我的项目的实际设计并不是最佳的,现在我想将这个项目移动到SQL Server,这样我就可以安排导入而不是手动运行Visual Studio项目。这意味着需要清理和优化实际项目。

基本上,对于每个表,过程很简单:截断表,从源中提取并加载到目标。我有大约200张桌子。提取无法并行化,因为源数据库一次只接受一个连接。那么你将如何设计这样一个项目?

我从Microsoft文档中读到,他们建议每个程序包使用一个数据流,但是管理200个不同的程序包似乎是不可能的,尤其是我必须链接以进行计划导入。另一方面,具有200个数据流的单个包也似乎无法管理......


编辑21/11:

我在启动这个项目时想要使用的第一个apporach是通过迭代表名列表自动提取我的表。如果我的源表和目标表具有所有相同的模式对象名称,但源和目标数据库来自不同的供应商(BTrieve和Oracle),它们也有不同的命名限制,这可能会很好。例如,BTrieve不保留名称并允许超过30个字符的名称,而Oracle则不允许。这就是我最终通过半自动列映射手动创建200个数据流的方式(大多数都是自动的)。

在为目标数据库生成CREATE TABLE查询时,我创建了一个可重用的C#库,其中包含生成新架构对象名称的方法,以防该方法可以自动化。如果有任何自定义工具来生成可以使用外部.NET库的软件包,那么这可能就行了。

3 个答案:

答案 0 :(得分:2)

您是否将BIDS Helper的BIML(商业智能标记语言)视为包生成工具?我用它来创建多个包都遵循相同的基本truncate-extract-load模式。如果你需要比BIML中内置的更聪明,那就是BimlScript,它增加了将C#代码嵌入到处理中的能力。

从您的问题描述中,我相信您可以编写一个BIML文件,并生成200个单独的包。您可以使用它来生成一个包含200个数据流任务的包,但我从未尝试过努力推动SSIS。

答案 1 :(得分:0)

您基本上可以创建10个包含20个数据流任务的子包,并创建一个触发这些子pkgs的主包。使用parent to child configuration创建单个XML file配置文件。定义执行的优先约束在主pkg中以串行方式打包。这样,与具有200个数据流任务的200个包或单个包相比,可维护性将更好。

答案 2 :(得分:0)

以下链接可能对您有用。

Single SSIS Package for Staging Process

希望这有帮助!