2015-12-07 5 views
0

Если я хочу копию базы данных CE SQL Server, который подготовлен для синхронизации (и, возможно, содержит некоторые данные уже), я могу сделать это с помощью SqlCeSyncStoreSnapshotInitialization:Каким образом создание моментального снимка базы данных SQL Server CE отличается от простого копирования файла .SDF?

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

Как генерируемой базы данных CE отличается от оригинал? Было бы иначе, если бы я просто сделал копию оригинального файла .SDF?

ответ

0

Да, это было бы иначе. Снимок представляет собой специально подготовленную базу данных SQL Server Compact, которая содержит схему таблиц, данные (необязательно) и инфраструктуру отслеживания изменений. Во время первого сеанса синхронизации для клиента обновляются метаданные для конкретного клиента, и любые изменения, произошедшие с момента создания моментального снимка, загружаются в базу данных клиента.

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

+0

спасибо ErikEJ, но вопрос _how_ он отличается. Я прочитал все онлайн-документы, и ничто, кажется, не объясняет это. Просто копирование исходного файла .SDF, похоже, работает нормально, поэтому я хочу знать, какую выгоду я получу от создания моментального снимка. –

1

разница в том, что каждая реплика в синхронизации Fx получает уникальный идентификатор реплики. Когда вы используете сгенерированный моментальный снимок, это сбрасывается при первой синхронизации. если вы просто скопируете sdf, вы получите базы данных с одинаковым идентификатором реплики и испортите синхронизацию.

если у вас есть моментальный А с репликой идентификатором 1, скопируйте его в качестве B, но она все еще имеет реплики идентификатора 1. Вы синхронизируете с сервером Z и Z сервер запоминает то, что он синхронизирован с репликой идентификатором 1.

вы пытаетесь синхронизировать B с Z и Z использует метаданные о том, что он синхронизируется с копией идентификатор 1 (а) и думает, что B является А.

вы теперь с помощью синхронизации метаданных для другой базы данных, потому что не может отличить два.

+0

Thanks JuneT. Можете ли вы описать, как синхронизация будет испорчена? Кстати, я использую SyncOrchestrator. В ответ на другой вопрос вы сказали, что снимки не работают с SyncOrchestrator. Это все еще правильно? –