有没有办法手动更新跟踪表以快速启动同步?

时间:2012-02-27 22:53:29

标签: c# sql-server microsoft-sync-framework

我正在使用Microsoft Sync Framework"协作"供应商。同步的两端将使用SQL Express开始。在配置时,数据库包含" _tracking"表格为每个"真实"数据库中的表。我的数据库相当大,我不想在第一次同步时通过MSF传输整个数据库。有没有办法使用其他方法来快速启动"当双方都知道包含相同数据时的同步?在我的测试中,当两个数据库包含相同的内容时,看起来它会下载整个范围,在整批"更改"中进行搅拌,然后将整个范围上传回服务器,然后服务器整个整个数据集再次。有没有办法更新_tracking表(希望只在一侧)让系统知道数据库内容是否相同?

更多信息(修改):

在执行初始同步后检查跟踪表的内容时,看起来每个_tracking表中的scope_update_peer_timestamplocal_create_peer_timestamp字段都需要在两侧进行更新。此外,update_scope_local_idscope_update_peer_keylast_change_datetime需要在双方中的一方设置。

last_change_datetime字段是日期时间,并且相当不言自明。 这两个_timestamp字段似乎使用@@DBTS,因此是包含等效于可编辑时间戳列的bigints。

这仍然留下了许多未知数:

  • MSF是否跟踪时间戳列内容来自哪个对等方?
  • 哪个对等体(本地或远程)驱动_timestamp字段的内容?
  • 什么逻辑驱动update_scope_local_idscope_update_peer_key字段的内容?

有关环境的更多信息(修改):

我双方都有SQL Express / Std。服务器端最终将包含多个客户端的信息(使用多租户),因此备份将没有用,因为服务器将包含多个客户端的信息。

1 个答案:

答案 0 :(得分:1)

您是如何初始化数据库的?您是否配置了包含相同数据集的数据库?

初始化其他副本的最佳方法是在SqlCeSyncProvider上使用GenerateSnapshot方法创建SDF文件以初始化其他副本或备份数据库(非SDF,SQL Server / Express数据库),还原并在执行同步之前运行PerformPostRestoreFixup。