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

SQL Server 2012:同步两台服务器,并同时写入两台服务器,sql,sql-server-2012,replication,mirroring,Sql,Sql Server 2012,Replication,Mirroring,我有一个SQL Server 2012企业版安装问题,到目前为止无法找到我的特定用例的解决方案: 我有两台SQL Server,一台在美国,一台在德国。两者都用于阅读和写作,任务是使它们同步。好消息是,虽然阅读发生了很多,但大约每分钟只写一次(不过是在不同的表格上)。基本上,我正在寻找一种复制设置,其中两台服务器都是主服务器,可以向另一台发送更改 可能吗 谢谢,Christoph您想使用双向流程。Yo可以在两台服务器上使用与分发服务器的合并复制。您可以通过对等事务性复制来达到目标,而且这可能会导

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

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

可能吗


谢谢,Christoph

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

是,为此,您可以使用
MergeReplication
Transactional Replication

下页详细介绍了这两种方法:

每个表必须有一个字段设置为rowguid。 其要求是其类型为uniqueidentifier。 您应该注意默认值“newid”带来的碎片问题。相反,您应该确保使用默认值“newsequentialid”

在SQLServerManagementStudio的帮助下设置此类复制时,它应该自动执行此操作。 下面的帖子中提到了newsequentialid和newid的一些细节:

或者,或者最适合这里

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

合并复制提供了双向同步,并能够定义静态和参数化行筛选器,以提供要发布到订阅服务器的数据子集。合并复制还提供内置冲突解决程序以及实现自定义冲突解决程序的能力

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

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


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

合并复制和事务复制都支持更新订阅服务器,但可能存在一些折衷方案,这可能很有趣。两台服务器之间的写操作是平衡的,还是一台服务器处理90%的写操作?我认为写操作是平衡的。一个是60%,另一个是40%左右。请问这有什么变化吗?