我在不同的服务器(B& C)中有2个同名的数据库(A)。两个数据库都具有相同的模式。 (sql server 2008 r2)
任务1:将两个数据库复制(传输)到名为(A_B和A_C)的第三个服务器(D)。
任务2:将两个数据库合并到一个数据库中(A_D)。 (我不知道如何处理密钥)
任务3:每天我必须从服务器B& C并放入集中服务器D。
任何帮助都将不胜感激。
感谢。
仅限Ritesh
答案 0 :(得分:0)
以下是一些想法:
任务1:通过备份还原到服务器D来传输数据库。
任务2:我认为这将涉及ETL流程并在数据库A_D中创建新的代理键。将密钥保留在数据源id列中的原始源中。我认为MERGE声明会有所帮助。
任务3:在任务2中利用逻辑
任务2的更新:
假设数据库A和B中的源Table1
有一个名为Table1_ID
的键列。在数据库A_D中添加列Table1_SourceID
和Table1_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_B
和A_C
加载数据。放置一个Derived Column
组件,它将添加一个新列 - SurKey。
在A_B
DataFlow中,将A_B
作为缩写A_C
放在第二个中。
任务3:使用您创建的数据流。在SSMS中编写作业脚本,将其添加到日常计划中。