如何在SQL Server 2008中同步不同服务器中的数据库?

时间:2010-08-06 16:13:44

标签: sql-server database synchronization

我有2个具有相同结构的数据库,一个在本地计算机上,另一个在公司的服务器上。每隔确定的时间,本地数据库中的数据应同步到服务器数据库。

我对如何执行此操作有一个大致的想法 - 创建一个脚本,以某种方式“合并”不在服务器数据库上的信息,然后使此脚本作为服务器的预定作业运行。但是,我的问题在于我对此并不十分熟悉。

SQL Server Management Studio是否提供了一种简单的方法(某种向导)并生成这种脚本?这是我必须从头开始构建的吗?

我已经完成了一些基本的谷歌搜索并遇到了“复制”一词,但我并不完全理解它。我宁愿听到那些实际上已经做过这件事的人的一些意见,或者他们善于解释这类事情。

感谢。

5 个答案:

答案 0 :(得分:12)

复制听起来像是一个很好的选择,但会有一些开销(不是技术开销,但知识需要支持它)。

另一个SQL Server选项是SSIS。 SSIS提供图形工具来设计您要做的事情。如果合适,SSIS包还可以运行SQL语句。可以从SQL Server作业启动并安排SSIS包。

在选择解决方案时,您应该考虑同步规则的复杂性。例如,在合并数据时难以解决冲突,例如重复密钥。如果规则很简单,则可以轻松创建SQL脚本。但是,复杂的冲突规则可能更难以在脚本(或复制)中实现。

答案 1 :(得分:8)

遗憾的是,SQL Server Management Studio并没有提供太多这样的功能。

你应该仔细研究一些优秀的商业产品:

他们都花钱 - 但如果你认真对待它,并且你在日常生活中使用它们,那么它们很快就会得到报酬 - 非常值得每一分钱。

SQL Server 2008中唯一的“免费”选项是在两台服务器之间创建一个链接,然后使用MERGE statement(SQL Server 2008中的新增功能)来传输数据。这不适用于结构更改,并且仅限于在两个服务器之间建立实时连接。

答案 2 :(得分:5)

您一定要阅读有关事务复制的内容。这听起来非常适合你所描述的情况。以下是一些可以帮助您入门的链接。

答案 3 :(得分:4)

您想要的是Peer-to-Peer Transactional Replication,它允许在两个数据库中更新数据,但通过连续的更改合并使数据保持同步。这是您想要的结果匹配,但是是一个相当昂贵的选项(在两个站点上都需要Enterprise Edition)。另一种选择是Bidirectional Transactional Replication,但由于这还需要两个EE许可证,我说对等点更容易以相同的资金部署。

一个更加预算友好的选项是Updatable Subscriptions for Transactional Replication,但是可以更新的订阅被弃用,你可以把钱放在一匹失去的马上。

另一种选择是使用Merge Replication。最后,对于“本地”数据库非常流动的情况,有Sync Framework

请注意,所有这些选项需要公司服务器数据库的一些配置和合作。

答案 4 :(得分:0)

有一些优秀的第三方工具。对我来说,xSQL Data Compare一直都是这样做的。由于比较是高度可修改的,因此几乎适用于所有数据比较或数据同步方案。希望这有帮助!