我正在使用 SQL Server 2005 CE 框架 3.5 并尝试在我的手持设备和我的 SQL Server 之间使用合并复制。当我运行代码进行同步时,它似乎永远存在,当我在代码中放置断点时,它永远不会超过对 Synchronize() 的调用。
如果我查看 sql server 中的复制监视器,它会说订阅不再同步并且不显示任何错误。因此,我假设这意味着同步已完成。
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;
}