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