Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
应用下载文件前,dbmlsync 会执行特殊的检查,检查上次下载时间戳、下一个上次下载时间戳、下载文件创建时间和事务日志。
每个下载文件都包含要下载的所有更改,这些更改在文件的上次下载时间戳和下一个上次下载时间戳之间发生在统一数据库上。统一数据库上的时间用于两个时间值。缺省情况下,文件的上次下载时间为 1900 年 1 月 1 日上午 12:00,文件的下一个上次下载时间戳为下载文件的创建时间。在统一数据库上实施 generate_next_last_download_timestamp、modify_last_download_timestamp 和 modify_next_last_download_timestamp 脚本时,这些缺省值会被替换。
仅当文件的上次下载时间戳小于或等于远程数据库的上次下载时间戳时,远程站点才可以应用下载文件。这可确保远程数据库永远不会丢失统一数据库上发生的操作。通常,当基于文件的下载因该检查而失败时,远程数据库即已丢失一个或多个下载文件。这种情况可以通过应用丢失的下载文件来更正,也可通过执行完整同步或仅下载同步来更正。
另外,仅当文件的下一个上次下载时间戳大于远程数据库的上次下载时间戳时,远程站点才可以应用下载文件。远程数据库的上次下载时间戳即远程数据库已经接收到所有即将下载的更改的时间(统一数据库上的)。每当远程数据库成功应用下载(常规的或基于文件的)时,远程数据库的上次下载时间都会更新。此检查可确保在已下载更新的数据后不再应用下载文件。发生此问题的常见情形是错误应用下载文件。例如,假设创建了下载文件 F1.df,稍后又创建了 F2.df。此检查可确保不会在应用 F2.df 之后应用 F1.df,因为那样会使 F2.df 中较新的数据被 F1.df 中较旧的数据覆盖。
当基于文件的下载操作因下一个上次下载时间戳的原因而失败时,除了删除该文件外,不需要进行其它任何操作。接收到新的文件后,同步即告成功。
下载文件的创建时间表示文件开始创建时统一数据库上的时间。下载文件仅在其创建时间大于远程数据库的上次上载时间时才可以应用。远程数据库的上次上载时间是在统一数据库中远程数据库上次成功上载的提交时间。此检查可确保在下载创建后上载的数据(要比下载的数据新)不会被下载文件中较旧的数据覆盖。
当下载文件因这一检查而遭到拒绝时,不需要执行任何操作。远程站点应可以应用下一个下载文件。
当因为 dbmlsync 向 MobiLink 服务器发送了上载后未得到确认而导致上载失败时,远程数据库的上次上载时间可能不正确。在这种情况下,创建时间检查将无法执行,远程数据库将无法应用下载文件,直到完成常规同步为止。
应用下载文件之前,dbmlsync 会扫描远程数据库的事务日志,并构建必须上载的所有更改的列表。仅当下载文件不包含任何会影响具有必须上载的更改的行时,Dbmlsync 才会应用该下载文件。