0

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

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

我尝试了此链接中指示的解决方案:

这基本上包括将解决方案平台从“任何”更改CPU为“x86”,但我仍然遇到同样的错误。我该如何解决?

4

1 回答 1

0

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

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

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

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

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

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

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

当手动安装过程后,regsvr32实际成功安装OLEDB驱动时,报错:“SQLBaseOLEDB-Provider is not registered on this local machine”。非常具有误导性.. 解决方案:您的所有 exe 都应使用 x86 开关而不是“任何 cpu”开关进行编译,以使它们在 64 位机器上运行。所有这些——你的堆栈中设置了“任何 cpu”选项的任何东西都会导致问题。将此开关设置为 x86 后,在您手动重新注册 dll 后,一切都应该正常工作。

于 2017-11-19T21:32:26.520 回答