Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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# Microsoft.SqlServer.Replication.ComErrorException;无法将属性更改为";任何CPU“;_C#_Mysql_Database_Sql Server 2008 - Fatal编程技术网

C# Microsoft.SqlServer.Replication.ComErrorException;无法将属性更改为";任何CPU“;

C# Microsoft.SqlServer.Replication.ComErrorException;无法将属性更改为";任何CPU“;,c#,mysql,database,sql-server-2008,C#,Mysql,Database,Sql Server 2008,正如标题所述,我对C#中的MergeSynchronizationAgent类有问题。当我尝试使用以下调用创建syncAgent时: syncAgent=subscription.SynchronizationAgent 在哪里 subscription=新的MergePullSubscription() 我收到一个错误,状态为Microsoft.SqlServer.Replication.ComErrorException,“类未注册”。现在,我已经阅读了这个问题的解决方案,最常见的是将我的项

正如标题所述,我对C#中的MergeSynchronizationAgent类有问题。当我尝试使用以下调用创建syncAgent时:

syncAgent=subscription.SynchronizationAgent

在哪里

subscription=新的MergePullSubscription()


我收到一个错误,状态为Microsoft.SqlServer.Replication.ComErrorException,“类未注册”。现在,我已经阅读了这个问题的解决方案,最常见的是将我的项目平台设置为“任意CPU”。这将修复工具的签出功能,但不幸的是,程序中还有其他查找64位数据库的功能,将项目平台设置为“任何CPU”会破坏此查找功能。此功能比签出功能更加严格,因此我们必须将项目的平台设置为“x86”,并让签出功能解决此问题。我的问题是,在我们的项目平台必须是“x86”的情况下,是否有其他修复此问题的方法?我使用的是Sql Server 2008 R2。

我假定您运行的是64位版本的Microsoft Sql Server 2008

64位安装程序包不安装/注册32位ActiveX组件。当您尝试访问SynchronizationAgent属性时,复制管理对象(RMO)程序集将使用这些组件

缺少注册是您收到ComErrorException的原因:您的32位应用程序正在查找具有特定GUID的ActiveX组件,但此GUID仅存在于64位注册表中,而您的应用程序未看到该组件。如果您构建“任意CPU”版本,您的应用程序将以64位运行,因此也将看到64位注册表

解决方法是让32位虚拟机运行并在那里安装32位版本的MicrosoftSQLServer2008。然后,您需要手动将一组特定文件从虚拟机复制到开发环境中,并将这些文件的注册作为应用程序设置的一部分进行集成


您可以从提交到的bug报告中找到解决方法的细节。错误报告的目标是针对32位SQL Server运行的64位应用程序,但情况是相同的。

我假定您运行的是64位版本的Microsoft SQL Server 2008

64位安装程序包不安装/注册32位ActiveX组件。当您尝试访问SynchronizationAgent属性时,复制管理对象(RMO)程序集将使用这些组件

缺少注册是您收到ComErrorException的原因:您的32位应用程序正在查找具有特定GUID的ActiveX组件,但此GUID仅存在于64位注册表中,而您的应用程序未看到该组件。如果您构建“任意CPU”版本,您的应用程序将以64位运行,因此也将看到64位注册表

解决方法是让32位虚拟机运行并在那里安装32位版本的MicrosoftSQLServer2008。然后,您需要手动将一组特定文件从虚拟机复制到开发环境中,并将这些文件的注册作为应用程序设置的一部分进行集成

您可以从提交到的bug报告中找到解决方法的细节。bug报告的目标是针对32位SQL Server运行的64位应用程序,但场景是相同的