2

我们正在运行 SQL Server 2008 R2。我们的操作软件针对该数据库运行,我们将运行访问两个单独数据库的操作软件的两个单独实例。两个数据库都在同一个 SQL Server 上。数据库中有 200 多个表的列表,需要在两个单独的数据库之间同步。可以从任一数据库访问这些表,并且插入/更新/删除必须在两个数据库之间同步。同步需要接近实时发生,每分钟不少于一次。

我知道我可以对触发器进行硬编码,使用 MERGE 来更新表,但这意味着编写 52 (26 x 2) 个单独的触发器,这些触发器对所有细节都进行了硬编码。

我研究了复制,但这似乎更适合一个主表喂养一个子表,而不是双向更新。

我查看了更改跟踪,但并非所有表都定义了 PK。这是供应商的数据库,不是我的。我知道所有的桌子都应该有PK。我不知道我可以在桌子上定义 PK。

我的另一个想法是用同义词替换其中一个表,以便两个系统实际上都在更新同一个表。我对该解决方案的担忧是“破坏”操作系统的可能性。

我刚刚开始研究 Microsoft Sync Framework 以及是否可以选择。

任何想法,建议,方向将不胜感激。

谢谢,戴夫

4

1 回答 1

2

这是一个复制方案。 Transactional Replication可以处理从订阅服务器到发布服务器的更新,但在这种情况下,您需要合并复制,它更适合在订阅服务器更新回发布服务器时合并冲突。

你需要PK。如果您有自动增量 IDENTITY 字段,那将是一个问题。有一些划分 id 范围的策略,例如为每个数据库中的表版本设置不同的 Identity Seed 值。

如果不能对数据库进行任何更改,这种方法可能无法满足要求。复制是做这类事情的正确方法,但它确实需要一些力量来改变结构。

于 2013-05-30T14:49:54.697 回答