Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (中文) » MobiLink - 客户端管理 » 用于 MobiLink 的 SQL Anywhere 客户端 » SQL Anywhere 客户端 » 启动同步

 

同步中的并发

为确保同步的完整性,dbmlsync 必须确保从服务器下载的更改不会修改自上次发送上载后已更改的远程数据库中的行。缺省情况下,通常是在未锁定任何表的情况下执行此操作的,以便最大限度地降低对数据库的其他并行用户的影响。对使用脚本式上载的发布进行同步或定义了 sp_hook_dbmlsync_schema_upgrade 挂接时,表在共享模式中处于锁定状态。

若表未被锁定,则 dbmlsync 会跟踪构建上载后修改过的所有行。如果下载包含某一行的更改,则将其视为冲突。

如果检测到冲突,将会取消下载阶段并回退下载操作,以避免将新更改覆盖。然后 dbmlsync 实用程序将重新尝试包含上载步骤的同步。这次进行同步尝试时,因为同步过程开始时该行就已存在,所以上载会包含该行,该行也就不会丢失。

缺省情况下,dbmlsync 将一直重新尝试同步,直到成功为止。您可以使用扩展选项 ConflictRetries 来限制重新尝试的次数。将 ConflictRetries 设置为 -1 将使 dbmlsync 一直重新尝试,直到同步成功。将该选项设置为非负整数时,将使 dbmlsync 最多只重新尝试所指定的次数。

有关详细信息,请参见ConflictRetries (cr) 扩展选项。 --------------------------------------------------------------------------------

 -d 选项
 LockTables 选项