Исключение при выполнении синхронизации на двух базах данных Sql Server с использованием MS Sync Framework

У меня есть две базы данных SQL Server, одна из которых является сервером, а другая является клиентом. Я хочу синхронизировать эти базы данных. Я подготовил серверную и клиентскую базу данных, и они оба подготовлены успешно. Но когда я выполняю метод синхронизации, он выдает следующую ошибку.

Получение фабрики классов COM для компонента с CLSID {046C184F-2188-4C99-A95A-9C0DCDC19050} не удалось из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Мой код для синхронизации

 SqlConnection clientConn = new SqlConnection(@"Data Source=.; Initial Catalog=SyncDbClient; Integrated Security=True");

        SqlConnection serverConn = new SqlConnection("Data Source=.; Initial Catalog=SyncDb; Integrated Security=True");

        // create the sync orhcestrator
        SyncOrchestrator syncOrchestrator = new SyncOrchestrator();

        // set local provider of orchestrator to a sync provider associated with the 
        // MySyncScope in the client database
        syncOrchestrator.LocalProvider = new SqlSyncProvider("MySyncScope", clientConn);

        // set the remote provider of orchestrator to a server sync provider associated with
        // the MySyncScope in the server databasew
        syncOrchestrator.RemoteProvider = new SqlSyncProvider("MySyncScope", serverConn);

        // set the direction of sync session to Upload and Download
        syncOrchestrator.Direction = SyncDirectionOrder.UploadAndDownload;

        // subscribe for errors that occur when applying changes to the client
        ((SqlSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed += new EventHandler<DbApplyChangeFailedEventArgs>(Program_ApplyChangeFailed);

        // execute the synchronization process
        SyncOperationStatistics syncStats = syncOrchestrator.Synchronize();

        // print statistics
        Console.WriteLine("Start Time: " + syncStats.SyncStartTime);
        Console.WriteLine("Total Changes Uploaded: " + syncStats.UploadChangesTotal);
        Console.WriteLine("Total Changes Downloaded: " + syncStats.DownloadChangesTotal);
        Console.WriteLine("Complete Time: " + syncStats.SyncEndTime);
        Console.WriteLine(String.Empty);
        Console.ReadLine();

2 ответа

Этот вопрос Stackru ссылается на тот же номер ошибки, который вы упомянули (80040154):

Не удалось получить фабрику класса COM для компонента с CLSID {XXXX} из-за следующей ошибки: 80040154

Похоже, этот пользователь решил свою проблему, установив правильную цель платформы в настройках файла проекта VS.

Это может быть не ответ, но я подумал, что я опубликую его, если это поможет.

(Пытался оставить это как комментарий, но у меня недостаточно очков репутации, чтобы сделать это.)

Вам нужно убедиться, что целевая платформа вашего приложения совпадает с платформой Sync Fx, которую вы установили.

например, x86 Sync Fx, приложение должно также предназначаться для x86.

Другие вопросы по тегам