创建集中式DB

时间:2013-07-30 19:09:46

标签: ssis ssis-2005 ssis-2012 ssis-2008

我在不同的服务器(B& C)中有2个同名的数据库(A)。两个数据库都具有相同的模式。 (sql server 2008 r2)

任务1:将两个数据库复制(传输)到名为(A_B和A_C)的第三个服务器(D)。

任务2:将两个数据库合并到一个数据库中(A_D)。 (我不知道如何处理密钥)

任务3:每天我必须从服务器B& C并放入集中服务器D。

任何帮助都将不胜感激。

感谢。

仅限Ritesh

2 个答案:

答案 0 :(得分:0)

以下是一些想法:

任务1:通过备份还原到服务器D来传输数据库。

任务2:我认为这将涉及ETL流程并在数据库A_D中创建新的代理键。将密钥保留在数据源id列中的原始源中。我认为MERGE声明会有所帮助。

任务3:在任务2中利用逻辑

任务2的更新:

假设数据库A和B中的源Table1有一个名为Table1_ID的键列。在数据库A_D中添加列Table1_SourceIDTable1_Source。使用源数据库中的密钥填充Table1_SourceID,并使用Table1_Source指示源数据库。

使用Table1_ID作为Table1的密钥,并且对于数据库A_D是唯一的。这将解释源数据库中键列的冲突。此外,您可以跟踪源数据库的行。

答案 1 :(得分:0)

任务1:创建没有结构的目标数据库。我会使用任务 - > export在SSMS中使用create structures选项在源数据库上运行。导出后,您将在目的地获得准确的副本。

任务2:A_D的每个表中创建一个新的键列(SurKey)。它必须是值的组合,它将在整个表中给出唯一值。例如。源表abbreviation + PK column + date

对于每个表,在SSIS包中创建两个数据流,这将从A_BA_C加载数据。放置一个Derived Column组件,它将添加一个新列 - SurKey。

A_B DataFlow中,将A_B作为缩写A_C放在第二个中。

任务3:使用您创建的数据流。在SSMS中编写作业脚本,将其添加到日常计划中。