0

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();

ありがとう

ビナイ

4

2 に答える 2

0

これが発生した別のケースがありました。ユーザーのデフォルトスキーマは、同期したいテーブルのスキーマではありませんでした...そして、それは機能しません:-)同期データベースユーザーのデフォルトスキーマをに変更しましたテーブルがあったのと同じスキーマで、シームレスに機能しました!

于 2013-05-31T14:21:54.770 に答える
0

共有データベース ホスティングに対する権限の問題でした。

JunT さん、ご協力ありがとうございます。

皆さん、ありがとうございました。

ありがとう

于 2012-04-18T12:46:04.867 に答える