5

我们面临以下涉及保持以下同步的问题:

  • 1 台集中式服务器 (IIS / MSSQL 2005)
  • ClickOnce 分发的许多桌面 WPF 客户端
  • 许多移动客户端 - (Windows CE)

替代文字 http://img502.imageshack.us/img502/8246/deployment.png

有了这些棘手的限制:

  • 所有同步关系都是双向的
  • 桌面和移动节点需要离线模式
  • 移动节点无法与中央服务器同步,但要通过 USB 与桌面节点同步。桌面节点充当移动客户端的服务器,而不是中央服务器。然后,来自移动节点的更新需要通过与桌面同步来传播到中央服务器,然后将该桌面与中央服务器同步。

讨厌。

要同步桌面和服务器,我们知道我们可以使用合并复制——服务器作为提供者,桌面作为订阅者,一切都很好。但是同步移动和桌面节点呢?似乎没有 SQL server + ISS,Desktop 不能成为发布者,对吧?我们只能将 MSSQL CE 部署到桌面。

即使是这种情况,一个节点是否可以既是订阅者又是发布者?我怀疑 Merge Replication 体系结构不支持这种安排 - 似乎集线器和辐射是唯一受支持的模型。

我们正在尝试确定是否可以消除 RDA 或合并复制作为可能的解决方案 - 如果可以,我们可能会采用 MS Sync 框架。

也许我们可以考虑其他技术?

谢谢大家,

阿什利

更新:我们刚刚开始玩 MS Sync Framework,它很震撼!

4

2 回答 2

7

由于与您的具体问题没有直接关系的原因,我认为您可以继续并消除 RDA/Merge Replication 作为可能的解决方案。Microsoft 没有宣传这一点(出于显而易见的原因),但在复制过程中间可能会断开网络连接的情况下(Windows Mobile 客户端经常发生这种情况),合并复制并不是 100% 可靠的。

此问题的结果是,对客户端数据库所做的更改有时不会完全传播到主数据库,但您无法检测到已发生这种情况的迹象。正如您可以想象的那样,这是一件坏事,特别是如果您基于 RDA 按广告宣传的假设向您的客户出售此解决方案。我们发现这个问题的唯一短期解决方案是实现一个非常笨重的双冗余过程,以确认在客户端添加或修改的每条记录都正确无误地传递到服务器。长期的解决方案是不再将 RDA 用于任何事情。

这个问题可能已经在最新版本的 RDA 中得到修复(我们的问题发生在 2 年前的最新版本中),但我永远不会知道(曾经被咬过两次)。

更新:顺便说一句,我和很多人谈过这件事(包括微软支持技术人员)否认这可能是真的,但很容易验证:在客户端上添加一堆数据,然后开始复制,然后在此过程中将 USB 电缆从设备中拔出(假设您的客户端是通过 ActiveSync 连接的 Windows Mobile)。

如果我看起来有点生气,部分原因是这就是 MS 技术人员最终被迫说的(实际引用):“好吧,继续复制 - 数据最终会合并”。

于 2009-08-18T01:35:09.713 回答
1

查看 Microsoft Framework 2.0 中的协作方案(对等)。其中包含的提供程序允许直接同步两个 SQL Server Compact 数据库。他们还能够直接与其他提供商同步。

于 2009-12-23T15:31:43.767 回答