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;
}