Microsoft同期フレームワークを使用してリモートSQLデータベースをローカルSQLデータベースと同期しようとしています
2つの異なるデータベースのローカルSQLで実行すると、チャームのように機能します。リモートデータベースで同じコードを試してみると、ローカルデータベースの同期でエラーが発生します。
データベースが同期用にプロビジョニングされていないか、同期構成テーブルへのアクセス許可がないため、現在の操作を完了できませんでした。
上記の例外を克服する方法
これが私のコードです
var serverProvision = new SqlSyncScopeProvisioning(serverConn); if (!serverProvision.ScopeExists(tableName)) { try { var scopeDesc = new DbSyncScopeDescription(tableName); scopeDesc.Tables.Add(SqlSyncDescriptionBuilder.GetDescriptionForTable(tableName, serverConn)); serverProvision.PopulateFromScopeDescription(scopeDesc); serverProvision.SetCreateTableDefault(DbSyncCreationOption.Skip); serverProvision.Apply(); } catch (Exception exception) { MessageBox.Show(exception.Message); } }
var clientProvision = new SqlSyncScopeProvisioning(clientConn);
if (!clientProvision.ScopeExists(tableName))
{
try
{
var scopeDesc = SqlSyncDescriptionBuilder.GetDescriptionForScope(tableName, serverConn);
clientProvision.PopulateFromScopeDescription(scopeDesc);
clientProvision.Apply();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
var serverProvider = new SqlSyncProvider(tableName, serverConn);
var clientProvider = new SqlSyncProvider(tableName, clientConn);
var syncOrchestrator = new SyncOrchestrator{Direction = SyncDirectionOrder.DownloadAndUpload,LocalProvider = clientProvider, RemoteProvider = serverProvider};
((SqlSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed += ProgramApplyChangeFailed;
syncOrchestrator.Synchronize();
ありがとう
ビナイ