生成SQL Server CE数据库的快照与简单地复制.SDF文件有何不同



如果我想要一个为同步提供的SQL Server CE数据库的副本(并且可以选择已经包含一些数据),我可以使用SqlCeSyncStoreSnapshotInitialization:

using (var conn = new SqlCeConnection(sourceConnectionString))
{
    var snapshot = new SqlCeSyncStoreSnapshotInitialization();
    snapshot.GenerateSnapshot(conn, "snapshot.sdf");
}

生成的CE数据库与原始数据库有何不同?如果我只是复制了原始.SDF文件,会有什么不同吗?

不同之处在于Sync Fx中的每个副本都有一个唯一的副本id。当您使用生成的快照时,这将在第一次同步时重置。如果您只是复制sdf,那么您最终会得到具有相同副本id的数据库,并且会破坏同步。

假设您有一个副本id为1的快照a,您将其复制为B,但它仍然具有副本id 1。您将A与服务器Z同步,服务器Z会记住它与副本id 1同步的内容。

您尝试将B与Z同步,Z使用它与副本id 1(A)同步的元数据,并认为B是A。

您现在正在为另一个数据库使用同步元数据,因为无法区分两者。

是的,情况会有所不同。快照是一个专门准备的SQL Server Compact数据库,其中包含表架构、数据(可选)和更改跟踪基础结构。在客户端的第一个同步会话期间,会更新客户端特定的元数据,并将自创建快照以来发生的任何更改下载到客户端数据库。

https://technet.microsoft.com/en-us/subscriptions/microsoft.synchronization.data.sqlserverce.sqlcesyncstoresnapshotinitialization(v=sql.105).aspx

最新更新