SQL Server 在两个数据库之间同步数据

Posted

技术标签:

【中文标题】SQL Server 在两个数据库之间同步数据【英文标题】:SQL Server Synchronize data between two database 【发布时间】:2015-04-30 13:22:05 【问题描述】:

我正在使用 SQL Server 2008 R2。我想在两个数据库之间同步数据。主数据库是所有插入、更新和删除操作发生的地方,它保存在网络上的不同服务器上。另一个是反映同步时主库状态的数据库。

我希望自动完成此活动。当任何记录在主数据库中插入、删除或更新时,它应该同时反映在其他数据库中。

我应该使用自定义脚本还是有可以处理该过程的工具?

【问题讨论】:

您使用的是什么版本的 SQL-Server?复制是一种选择吗? msdn.microsoft.com/en-us/library/ms151198.aspx 我使用的是 MS SQL Server 2008 R2。这个版本有什么可能的方法吗? 好的,你可以在这里查看:msdn.microsoft.com/en-us/library/… 【参考方案1】:

最好的办法是使用Transactional Replication。

作为最佳实践,性能将取决于

您要复制多少数据?始终只复制您需要的数据(而不是整个数据库)。 发布者 - 分发者和订阅者之间的网络带宽。 请记住,初始快照会锁定发布者端的表,因此最好在最短的活动时间内创建快照。

如果数据库太大,可以initialize it from backup。

另外,请参考Transactional Replication Concerns。

【讨论】:

数据库太大,即十万条记录,并且主表中的数据被非常频繁地插入,在 4-5 个表中以秒为单位。我希望它自动完成。 这就是为什么我建议在维护窗口期间或活动最少时设置并执行初始快照。此外,只复制您需要的数据。 是自动流程吗? 是的,它是 .. 一旦您进行设置并将初始快照应用于订阅者。您应该先阅读文章并在测试环境中实现。在对 Publisher 进行架构更改时必须小心,因为它需要一个新的快照。还要看看 T-Rep 的局限性。

以上是关于SQL Server 在两个数据库之间同步数据的主要内容,如果未能解决你的问题,请参考以下文章

在两者之间通过 WCF 服务同步 2 个本地 SQL Server 数据库

access和sql server实时同步

SQL Server - 使用 Merge 语句实现表数据之间的对比同步

转载SQL Server - 使用 Merge 语句实现表数据之间的对比同步

如何在 SQL Server 数据库之间同步视图和存储过程?

SQL Server 2008 数据库同步的两种方式 (发布订阅)