SQL Server 2012:同步两个服务器并同时写入两个服务器

时间:2013-11-12 15:52:15

标签: sql sql-server-2012 replication mirroring

我有一个SQL Server 2012 Enterprise安装问题,到目前为止无法找到我的特定用例的解决方案:

我有两台SQL服务器,一台在美国,一台在德国。两者都用于读写,任务是使它们同步。好消息是,虽然阅读发生了很多,但每分钟只写一次(不过对于各种表格)。基本上我正在寻找一个复制设置,其中两个服务器都是主服务器,可以将更改发送给另一个..

这可能吗?

谢谢,Christoph

3 个答案:

答案 0 :(得分:6)

此处Merge ReplicationBidirectional Transactional ReplicationPeer-to-Peer Replication最适合。

由于写入可以在两个服务器上进行,因此您需要考虑在发生冲突时要执行的操作。在同步之间的2个不同服务器上更改相同的行/列时,将发生冲突。如果可能,最好通过分区写操作来完全避免冲突。可以实现的一种方法是向可写表添加特定于位置的标识符列,并确保特定行的写操作仅在一个位置执行。

合并复制提供双向同步以及定义静态和参数化行过滤器的功能,以提供要发布给订阅者的数据子集。 Merge Replication还提供内置冲突解决程序以及实现自定义冲突解决程序的功能。

双向事务复制提供双向同步,但不提供任何类型的冲突检测或解决方案。

点对点复制提供双向同步,但是,它要求所有节点都是Enterprise Edition,并且不支持行或列过滤。点对点复制具有内置冲突检测功能,但不提供自动冲突解决方案。

我建议您在测试环境中设置每个复制类型,以查看最适合您需求的复制类型。

答案 1 :(得分:2)

是的,为此您可以使用MergeReplicationTransactional Replication

以下页面详细介绍了它们: http://technet.microsoft.com/en-us/library/ms152531.aspx

每个表必须将一个字段设置为rowguid。 对此的要求是它的类型为uniqueidentifier。 您应该知道默认值“newid”带来的碎片问题。而不是这样,你应该确保使用默认值“newsequentialid”。

在SQL Server Management Studio的帮助下设置此类复制时,它应自动执行此操作。 在下面的文章中提到了newsequentialid和newid的一些细节: http://www.mssqltips.com/sqlservertip/1600/auto-generated-sql-server-keys-with-the-uniqueidentifier-or-identity/

答案 2 :(得分:0)

您想要使用双向流程。 Yo可以在两台服务器上使用与分发服务器的合并复制。您可以通过对等事务复制达到目标,也可能导致冲突,因此请使用具有冲突解决方案的合并复制。