3

我需要将 20 个具有相同结构的数据库合并到 1 个数据库中。我看到了这篇文章: 以最小的延迟将来自许多不同数据库的数据合并为一个

我不明白这一切,所以让我这样问:有些表有主键但没有 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

...是否可以使用事务复制来做到这一点?

提前感谢您的回答,如果我能得到正确的答案,那将非常有帮助。

伊利亚

4

3 回答 3

2

如果我理解正确,您可以通过

创建 DTS/SSIS 包。 这是一个基本的 SSIS 教程

直接运行 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 作业调用

不要忘记考虑如何检测已将哪一行复制到目标数据库。

于 2011-07-18T19:38:58.183 回答
1

我解决了这个问题。现在我正在使用Transactional Replication。在“出版物属性 > 文章属性”中,我必须将“名称正在使用时的操作”标志设置为“保持现有对象不变”。默认为“删除现有对象并创建一个新对象”。在 SQL 2008 中,即使我更改表方案,这些更改也会应用于整合数据库。

于 2011-07-22T09:32:36.903 回答
0

SQL-Hub ( http://sql-hub.com ) 将允许您将具有相同架构的多个数据库合并到一个数据库中。有一个免费许可证可让您从 UI 执行此操作,但如果您想安排该过程自动运行,您可能需要支付许可证费用。它比复制更容易使用——尽管效率不高。

于 2014-06-06T12:52:53.133 回答