Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MS Sync Framework在两个Sql Server数据库上执行同步时出现异常_C#_Asp.net_Sql Server_Synchronization_Microsoft Sync Framework - Fatal编程技术网

C# 使用MS Sync Framework在两个Sql Server数据库上执行同步时出现异常

C# 使用MS Sync Framework在两个Sql Server数据库上执行同步时出现异常,c#,asp.net,sql-server,synchronization,microsoft-sync-framework,C#,Asp.net,Sql Server,Synchronization,Microsoft Sync Framework,我有两个sql server数据库,一个是服务器数据库,另一个是客户端数据库。我想同步这些数据库。我已经设置了服务器和客户端数据库,并且它们都已成功设置。但当我执行sync方法时,它会给出以下错误 由于以下错误,检索CLSID为{046C184F-2188-4C99-A95A-9C0DCDC19050}的组件的COM类工厂失败:80040154类未注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG)) 我要同步的代码是- SqlConnection clie

我有两个sql server数据库,一个是服务器数据库,另一个是客户端数据库。我想同步这些数据库。我已经设置了服务器和客户端数据库,并且它们都已成功设置。但当我执行sync方法时,它会给出以下错误

由于以下错误,检索CLSID为{046C184F-2188-4C99-A95A-9C0DCDC19050}的组件的COM类工厂失败: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();
SqlConnection clientConn=newsqlconnection(@“数据源=;初始目录=SyncDbClient;集成安全性=True”);
SqlConnection serverConn=newsqlconnection(“数据源=;初始目录=SyncDb;集成安全性=True”);
//创建sync或hcestrator
SyncOrchestrator SyncOrchestrator=新的SyncOrchestrator();
//将orchestrator的本地提供程序设置为与关联的同步提供程序
//客户端数据库中的MySyncScope
syncOrchestrator.LocalProvider=新的SqlSyncProvider(“MySyncScope”,clientConn);
//将orchestrator的远程提供程序设置为与关联的服务器同步提供程序
//服务器数据库中的MySyncScope
syncOrchestrator.RemoteProvider=新的SqlSyncProvider(“MySyncScope”,serverConn);
//将同步会话的方向设置为上载和下载
syncOrchestrator.Direction=SyncDirectionOrder.UploadAndDownload;
//订阅将更改应用到客户端时发生的错误
((SqlSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed+=新事件处理程序(程序\u ApplyChangeFailed);
//执行同步过程
SyncOperationStatistics syncStats=syncOrchestrator.Synchronize();
//打印统计数据
Console.WriteLine(“开始时间:+syncStats.SyncStartTime”);
Console.WriteLine(“上传的总更改数:+syncStats.UploadChangesTotal”);
Console.WriteLine(“下载的总更改数:+syncStats.DownloadChangesTotal”);
Console.WriteLine(“完成时间:+syncStats.SyncEndTime”);
Console.WriteLine(String.Empty);
Console.ReadLine();

此StackOverflow问题引用了您提到的相同错误号(80040154):

看起来该用户通过在VS项目文件设置中设置正确的平台目标解决了问题

这可能不是答案,但我想我会发布它,以防有帮助


(试图将此作为评论,但我没有足够的信誉点来评论。)

您需要确保应用程序的目标平台与您安装的同步Fx平台相同


e、 例如,x86 Sync Fx,应用程序也必须以x86为目标。

另一个可能有用的StackOverflow问题:-它再次表明问题可能与32位和64位组件有关。