使用SSIS包将数据从多个数据库中提取到一个数据库,但希望将登台表限制为一个

时间:2015-05-11 17:24:29

标签: sql-server database ssis

在我目前的要求中,我们有一个DataMart数据库,我们在其中从许多其他数据库中提取数据。

该表的架构在所有数据库中可能不相同。

问题1 是否可以使用一个通用的SSIS包从所有源数据库中提取数据,尽管数据库中的架构可能不同。

我的理解是架构不一样,因此每个数据库的转换都会有所不同。因此,我正在考虑每个源数据库单独的SSIS包。

SSIS包当前设计: truncate staging table - >将数据从源提取到临时表+转换+添加源列值 [我需要跟踪数据源和列,即源是DB1,DB2 ..] - >在主表中合并 以上设计(截断步骤作为第一步)我被迫每个源数据库有一个临时表。 (如果我有5个表和3个源数据库,那么我需要有15个临时表)

问题2 :是否可以使用一个临时表管理所有源数据库(即(例如,如果我有总共5个表和总共3个源数据库;我仍然只需5个分段即可管理所有源数据库的表/公共登台表)

注意:SSIS包可以同时为DB1,DB2 ..

运行 普通登台表的 我的想法是在登台表中定义新列:“isRecordProcessed”。 SSIS包设计:: 第1步 - 删除isRecordProcessed为true的所有记录。 第2步 - 将数据从源提取到临时表+转换+添加源列值。主表步骤4 中的步骤3 合并将此记录标记为已处理,即isRecordProcessed = true。

但问题我看到解决方案是让我们说而SSIS pkg1正在执行SSIS pkg2也被解雇了。现在作为步骤1,这将删除SSIS Pkg1的所有已处理记录。这可能使正在进行的SSIS pkg1 :: forloop计数器[MERGE步骤]无效,并且可能导致跳过某些记录,作为MERGE步骤的一部分

1 个答案:

答案 0 :(得分:1)

回答1:

是的,您可以使用1个带有三个数据流的SSIS进行iu

回答2:

只要您所有5个表的架构都在1个不稳定的表中。但我会创建5个临时表,并同时从3个数据库加载它们。

您可以使用所有ETL任务执行一个大包。

但问题

包1完成后运行package2。

希望这有帮助。