SQL CE 3.5 SP 2, SqlCeEngine.Compact()同步错误



我有一个坚固的设备应用程序(. NET CF)使用SQL CE 3.5 sp2数据库,当设备停靠到摇篮时,通过USB与使用Microsoft Sync Framework 2.1的SQL Server 2008同步。

最近,设备应用程序在SDF中遇到了一些数据库损坏,因此我实现了一些在启动时运行的维护代码,这些代码使用SqlCeEngine Verify, Repair和Compact方法。基本上,应用程序使用verify方法检查SDF,修复它(或失败),然后在启动应用程序之前压缩它。

从那以后一切都运行得很好,所以我只是实现了每次设备同步时执行相同例程的代码,当我发现这篇来自Microsoft的KB文章时:

执行SqlCeEngine. exe后。 - http://support.microsoft.com/kb/967502#appliesto

对同步到中央数据库服务器的SQL Server Compact 3.5客户端数据库的压缩方法,对客户端数据库的某些更改可能无法上传。

这篇文章非常模糊,没有提供任何关于为什么会发生这种情况的信息,或者它是否已经在SQL CE 3.5 SP 2中修复了。谁能提供更多的信息,为什么这个问题发生?

文章还建议使用收缩方法代替,但考虑到它们(本质上)执行相同的功能,为什么我们能够使用收缩而不是紧凑?

我理解这篇文章指的是Microsoft的ADO同步服务。. NET而不是同步框架2.1,但我只是想检查这个问题是否适用于我的情况。我的理解是ADO的同步服务。. NET是建立在同步框架之上的,它允许使用WCF服务进行同步。

我已经运行了测试,我在客户端和服务器(双向同步)上进行了更改,压缩了SDF,然后与服务器同步,一切似乎都在正确同步,但我想确定。

如果有人能提供一些关于这方面的信息,我将非常感激。

Compact()方法创建一个新的数据库,有时同步锚实际上得到重置

见:http://support.microsoft.com/kb/969858

如果你在Windows Mobile设备上使用它,那就是ADO的服务同步。. NET(设备)

最新更新