【发布时间】:2009-12-04 16:32:55
【问题描述】:
我有一个桌面客户端,它使用同步框架将数据库同步到服务器。我偶尔会在“清理”表格更改跟踪时遇到问题。
我做了一些研究,并在互联网上找到了一个帖子,其中提供了一些代码,可以重置桌子上的锚点,然后重新同步。这是为了使表格重新下载,从而解决问题。 (Source here)
我是这样实现代码的:
=开启同步:: =
catch (SyncException ex)
{
Exception ex2 = ex.InnerException;
if (ex2.Message.Contains("cleaned up"))
{
try
{
syncStats = syncAgent.Synchronize(true);
//pass in true so removes anchors
catch (Exception anothererror)
{
//This will hit with another error equaling “Cleaned-up” on a table.
}
}
= 同步代理:: =
public SyncStatistics Synchronize(bool reinit)
{
if (!reinit)
return base.Synchronize();
try
{
ClientSyncProvider sqlCeProvider;
sqlCeProvider = (ClientSyncProvider)this.LocalProvider;
foreach (SyncTable st in this.Configuration.SyncTables)
{
if (st.SyncDirection != SyncDirection.Snapshot)
{
// Null anchors here
sqlCeProvider.SetTableReceivedAnchor(st.TableName, new SyncAnchor());
}
}
}
catch (Exception ex)
{
}
return base.Synchronize();
}
此代码将检测更改跟踪“清理”错误,然后调用 Synchronize(true) 并将每个表的所有锚点设为空,然后调用另一个同步。这就是成功同步的重点,不幸的是,情况并非如此,并且会遇到另一个“已清理”异常的“catch (ex anothererror){”。
任何想法我哪里出错了?
谢谢, 可汗。
【问题讨论】:
-
“问题”?这些问题是否有错误编号或错误消息?您不认为错误消息的文本在解决问题时具有某种相关性吗?
-
同步异常消息是“SQL Server Change Tracking 已清理表客户端的跟踪信息。要从此错误中恢复,客户端必须重新初始化其本地数据库并重试”我的“问题”直接相关对此,因为它会导致同步失败,任何有能力提供帮助的人都应该知道我指的是什么。我已按照我链接的帖子的说明进行操作,希望它能解决我的“问题”,唉,事实并非如此,我只是想问是否有人能明白为什么......
标签: c# sql-server-2008 synchronization microsoft-sync-framework