我在不同的服务器(B 和 C)中有 2 个同名的数据库(A)。两个数据库具有相同的架构。(sql server 2008 r2)
任务 1:将两个数据库复制(传输)到名称为(A_B 和 A_C)的第三个服务器(D)中。
任务 2:将两个数据库合并为一个数据库(A_D)。(我不知道我将如何处理密钥)
任务 3:每天我必须从服务器 B 和 C 获取数据并放入集中式服务器 D。
任何帮助,将不胜感激。
谢谢。
里特什
这里有一些想法:
任务 1:通过对服务器 D 进行备份和还原来传输数据库。
任务 2:我认为这将涉及 ETL 过程和在数据库 A_D 中创建新的代理键。将原始来源的密钥保存在数据源 id 列中。我认为MERGE声明会有所帮助。
任务 3:利用任务 2 中的逻辑
任务 2 的更新:
假设Table1
数据库 A 和 B 中的源有一个名为 的键列Table1_ID
。在数据库 A_D 中添加列Table1_SourceID
和Table1_Source
. 使用来自源数据库的键填充Table1_SourceID
,并用于Table1_Source
指示源数据库。
Table1_ID
用作 的键,并且对数据库A_DTable1
是唯一的。这将解释源数据库中关键列的冲突。此外,您可以跟踪源数据库的行。
任务 1:创建没有结构的目标数据库。我会export
在 SSMS 中使用带有创建结构选项的源数据库上的任务 -> 函数。导出后,您将在目的地获得准确的副本。
任务2:在每个表中A_D
创建一个新的键列(SurKey)。它必须是在整个表中给出唯一值的值的组合。例如源表abbreviation + PK column + date
。
对于每个表,在 SSIS 包中创建两个数据流,它们将从A_B
和加载数据A_C
。放一个Derived Column
组件,这将添加一个新列 - SurKey。
在A_B
DataFlow 中,将 theA_B
作为缩写,A_C
放在第二个中。
任务 3:使用您创建的数据流。在 SSMS 中编写作业脚本,将其添加到每日计划中。