System.InvalidOperationException:' SQLBASEOLEDB.1'提供商未在本地计算机上注册

时间:2017-11-17 10:00:51

标签: c# asp.net oledb sqlbase

在调用ASP.NET Webservice的方法时,我在浏览器中收到以下错误消息:

System.InvalidOperationException: 'SQLBASEOLEDB.1' provider not registered on local machine

我尝试了此Link中指出的解决方案:

其中基本上包括将解决方案平台从"任何CPU更改为" x86""但我仍然得到同样的错误。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您使用的是SQLBase 32位还是64位。

打开注册表编辑器(regedit.exe),然后导航到HKLM \ SOFTWARE \ Classes(或HKCR)。 向下滚动并查找SQLBASEOLEDB。 您会看到几个条目: SQLBASEOLEDB - Unversioned,指向最近安装的版本(不一定是最高版本) SQLBASEOLEDB.1 - 与上面相同 SQLBASEOLEDB.12 - SQLBase 12的特定版本(相同的主要版本) SQLBASEOLEDB.120 - SQLBase 12.0的特定版本(相同的主要版本和次要版本)

除SQLBASEOLEDB.120之外的所有条目仅仅是链接到所述条目。直接测试SQLBASEOLEDB.120 可以避免间接,这可能是问题所在。

或者,注册中可能存在错误。

  • 您可以通过创建UDL文件(扩展名为.udl的空文件)测试驱动程序,然后双击它。转到'提供商'选项卡,然后选择SQLBase并单击' Next'。请记住,在64位计算机上,这将使用64位版本的OLEDB驱动程序。

  • 如果您使用的是SQLBase 32bit,请使用重新注册dll %windir%\ syswow64 \ regsvr32.exe路径/到/ sqlbaseoledb.dll

  • 如果您使用的是SQLBase 64bit,请使用重新注册dll %windir%\ System32 \ regsvr32.exe path / to / sqlbaseoledb.dll

在手动安装过程之后,当regsvr32实际成功安装OLEDB驱动程序时,出现错误消息:" SQLBaseOLEDB-Provider未在此本地计算机上注册"。 是非常误导.. 解: 所有你的exes都应该用x86开关编译 "任何cpu"切换到让它们在64位机器上运行。所有这些 - 你的堆栈中任何有"任何cpu"选项集会引起问题。将此开关设置为x86后,手动重新注册dll后一切正常。