Я использую SQL Server 2005 CE Framework 3.5 и пытаюсь использовать репликацию слиянием между моим портативным и SQL Server. Когда я запускаю код для синхронизации, он просто кажется вечным, а когда я ставлю точку останова в своем коде, она никогда не проходит через вызов Synchronize ().
Если я посмотрю на монитор репликации на сервере sql, он доходит до того, что говорит, что подписка больше не синхронизируется и не выдает никаких ошибок. Поэтому я предполагаю, что это означает, что синхронизация завершена.
http://server/virtualdirectory/sqlcesa35.dll?diag не сообщает о проблемах.
Это моя первая попытка разработки любого портативного устройства, поэтому я, возможно, сделал что-то глупое. Тем не менее SQL Server сообщает об успешной синхронизации.
Любая помощь будет принята с благодарностью, так как я потратил на это целую вечность!
Вот мой код.
const string DatabasePath = @"SD Card\mydb.sdf";
var repl = new SqlCeReplication
{
ConnectionManager = true,
InternetUrl = @"http://server/virtualdirectory/sqlcesa35.dll",
Publisher = @"servername",
PublisherDatabase = @"databasename",
PublisherSecurityMode = SecurityType.DBAuthentication,
PublisherLogin = @"username",
PublisherPassword = @"password",
Publication = @"publicationname",
Subscriber = @"PPC",
SubscriberConnectionString = "Data Source=" + DatabasePath
};
try
{
Cursor.Current = Cursors.WaitCursor;
if (!File.Exists(DatabasePath))
{
repl.AddSubscription(AddOption.CreateDatabase);
}
repl.Synchronize();
MessageBox.Show("Successfully synchronised");
}
catch (SqlCeException e)
{
DisplaySqlCeErrors(e.Errors, e);
}
finally
{
repl.Dispose();
Cursor.Current = Cursors.Default;
}