有没有办法手动更新跟踪表来启动同步
本文关键字:启动 同步 跟踪 更新 有没有 | 更新日期: 2023-09-27 18:25:55
我正在使用Microsoft Sync Framework"协作"提供程序。同步的两端都将从开始使用SQL Express。配置时,数据库中的每个"真实"表都包含一个"_tracking"表。我的数据库相当大,我不想在第一次同步时通过MSF传输整个内容。当双方都包含相同的数据时,有没有办法使用其他方法来"启动"同步?在我的测试中,当两个数据库都包含相同的内容时,它看起来像是下载了整个范围,搅拌整个"更改"批次,然后将整个范围上传回服务器,然后服务器再次搅拌整个数据集。有没有任何方法可以更新_tracking表(希望只在一侧),让系统知道数据库内容是相同的?
更多信息(编辑):
从进行初始同步后检查跟踪表的内容来看,似乎每个_tracking表中的scope_update_peer_timestamp
和local_create_peer_timestamp
字段都需要在两侧进行更新。此外,update_scope_local_id
、scope_update_peer_key
和last_change_datetime
需要设置在两侧中的一侧。
last_change_datetime
字段是一个日期时间,并且非常不言自明。两个_timestamp
字段似乎使用了@@DBTS
,因此是包含等效于可编辑时间戳列的bigint。
这仍然留下了一堆未知:
- MSF是否跟踪时间戳列的内容来自哪个对等方
- 哪个对等方(本地或远程)驱动_timestamp字段的内容
- 什么逻辑驱动
update_scope_local_id
和scope_update_peer_key
字段的内容
有关环境的更多信息(编辑):
我两边都有SQL Express/Std。服务器端最终将包含多个客户端的信息(使用多租户),因此备份将毫无用处,因为服务器将包含多客户端的信息。
如何初始化数据库?您是否正在配置已经包含同一组数据的数据库?
初始化其他副本的最佳方法是在SqlCeSyncProvider上使用GenerateSnapshot方法,该方法创建SDF文件以初始化其他副本或备份数据库(非SDF、SQLServer/Express数据库),恢复数据库并在执行同步之前运行PerformPostRestoreFixup。