2

根据Zumero for SQL Server 文档,默认的冲突解决行为是使用记录版本号。

但是,是否可以改为基于时间戳?业务规则是最后更新的记录应该获胜。

此外,是否有可能(并且足够简单)将服务器端数据库的特定子部分同步到每个客户端设备?

PS:假设客户端设备的时间与互联网时间大致同步 - 将定期在设备上执行检查。由于数据的性质,如果客户端的时钟延迟几秒钟,这不是问题。在更新发生在 5 秒内的例外情况下,哪一个获胜并不重要。最重要的是,平均而言,在所有客户中,最后的记录获胜。

4

1 回答 1

1

按时间戳解决冲突

简而言之,没有。今天不可能通过时间戳选择“获胜”更改。但你应该质疑这是否真的是你想要的。:)

Zumero for SQL Server 文档不完整,但云服务器文档中的冲突解决细节仍然正确。(您设置它们的方式发生了变化,但规则本身没有改变。)简而言之:

记录有版本号。除非两个用户修改同一记录的同一版本,否则始终接受最新版本,这与时间戳相同(没有与不准确系统时钟相关的问题)。

如果两个用户修改同一行的同一版本,则存在冲突。默认的冲突解决方法是列合并:

  • 对同一记录的不同的更改都被接受。
  • 对于同一记录的同一列的冲突更改,接受最后到达服务器的更改。

您可以更改冲突解决方案,以便服务器接受同步的最新版本,而无需列合并,这可能是您想要的。从服务器的角度来看,这是最近的记录。您可以通过将situation_mod_after_mod分辨率更改为action_accept.

划分 SQL Server 数据库

1.0 版(和当前的预览版)允许按表分割 SQL Server 数据库。使用 ZSS Manager 应用程序,您可以定义一个dbfile

  • dbfile 是最小的可同步单元。
  • 在客户端,一个 dbfile 变成一个 sqlite 数据库文件。
  • 在服务器上,您选择要添加到 dbfile 的表。
  • 一个 SQL Server 表可能只属于一个 dbfile。

ZSS 管理器文档中有更多详细信息。

于 2013-10-30T14:00:26.087 回答