我需要将 20 个具有相同结构的数据库合并为 1 个数据库。我看到了这个帖子: Consolidate data from many different databases into one with minimum latency
我不明白所有这些所以让我这样问:有些表有主键但没有 sourceID,例如:
数据库 1
AgencyID Name
1 Apple
2 Microsoft
数据库 2
AgencyID Name
1 HP
2 Microsoft
很明显,这两个表不能像这样合并,它需要附加列:
数据库 1
Source AgencyID Name
DB1 1 Apple
DB1 2 Microsoft
数据库 2
Source AgencyID Name
DB2 1 HP
DB2 2 Microsoft
如果这是这样做的正确方法,可以将这两个表合并到一个数据库中,如下所示:
Source AgencyID Name
DB1 1 Apple
DB1 2 Microsoft
DB2 1 HP
DB2 2 Microsoft
...是否可以通过事务复制来实现?
预先感谢您的回答,如果我能得到正确的答案,那将非常有帮助。
伊利亚
最佳答案
如果我理解正确的话,你可以这样做
创建 DTS/SSIS 包。 这是一个 basic SSIS tutorial .
或者像直接运行SQL
INSERT INTO [TargetDatabase].dbo.[MergedAgency]([Source], [AgencyID], [Name])
SELECT CAST('DB1' AS nvarchar(16)), [AgencyID], [Name]
FROM [SourceDatabase1].dbo.[Agency]
INSERT INTO [TargetDatabase].dbo.[MergedAgency]([Source], [AgencyID], [Name])
SELECT CAST('DB2' AS nvarchar(16)), [AgencyID], [Name]
FROM [SourceDatabase2].dbo.[Agency]
然后通过 循环 SQL Server Job 调用 与一个 Job Step和一个 Schedule
不要忘记考虑如何检测哪一行已被复制到目标数据库。
关于sql-server - 将 SQL Server 数据库合并为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6677959/