40

我刚从 XP 迁移到 Win 7。我猜这个错误与切换操作系统有关。我编写了一个 .net 应用程序,它基本上处理大量数据,然后连接到数据库并插入/更新表。

当我点击一个按钮连接到数据库时,我遇到了关于没有在我的本地机器上注册 oracle 提供程序的错误。

非常感谢我如何快速解决此问题的清晰分步大纲。

确切的错误信息是:

'OraOLEDB.Oracle.1' 提供程序未在本地计算机上注册

4

14 回答 14

54

在 Windows 7 64 位上安装 64 位 Oracle 客户端后,我遇到了同样的问题。对我有用的解决方案:

  1. 在管理员模式下打开命令提示符
  2. cd \oracle\product\11.2.0\client_64\BIN
  3. c:\Windows\system32\regsvr32.exe OraOLEDB11.dll
于 2012-11-02T17:27:35.433 回答
9

我在使用 IIS 时遇到了同样的问题。

确保在应用程序池的高级配置中将“启用 32 位应用程序”选项设置为true

于 2016-03-07T13:19:30.333 回答
5

Do the following test:

Open a Command Prompt and type: tnsping instance_name

where instance_name is the name of the instance you want to connect (if it's a XE database, use "tnsping xe"

If it returns ok, follow steps of Der Wolf's answer. If doesn't return ok, follow steps of Annjawn's answer.

It solved for me in both cases.

于 2012-12-14T18:31:29.103 回答
4
  1. 右键单击我的电脑
  2. 点击属性
  3. 点击高级系统设置
  4. 单击“环境变量”按钮。
  5. 在系统变量部分找到“PATH”变量
  6. 编辑“PATH”变量并向其添加 Oracle 安装路径(从您的本地计算机),如;C:\oracle\product\10.2.0\client_1\bin
于 2012-10-15T20:56:33.117 回答
4

如果您有 Windows 64 位,请尝试先安装 oracle 驱动程序 32 位,然后再安装 64 位驱动程序,这就是我所做的并且正在工作

于 2014-08-29T17:46:09.090 回答
3

它仅在我将“平台目标”更改为“x64”后才对我有用(考虑到我使用的是 Oracle 12c 64 位)

为此,我做了:

  1. 右键单击项目名称(在解决方案资源管理器面板中,通常位于左侧)

  2. 单击“构建”(在新打开的窗口中)

  3. 将“平台目标”从“任何 CPU”更改为“x64”

这解决了问题。

于 2015-01-15T14:46:15.530 回答
3

我遇到了同样的问题,但我的解决方案是将平台目标保持为 Any CPU 和 UNCHECK Prefer 32-bit 复选框。在我取消选中它后,我能够打开与提供商的连接。

关闭首选 32 位

于 2018-09-14T19:47:14.403 回答
2

花了几个小时来解决这个问题;对于一些安装不正确的人,您需要卸载当前版本并以管理员身份重新安装在此处输入图像描述

于 2016-11-21T11:59:52.197 回答
2

只需检查您安装驱动程序的架构

在 32 和 64(单独的实例)中打开 Powershell 并启动:

# OLEDB-drivers
(New-Object System.Data.OleDb.OleDbEnumerator).GetElements() | select SOURCES_NAME, SOURCES_DESCRIPTION

# ODBC-drivers
Get-OdbcDriver | select Name,Platform
于 2021-06-22T08:31:28.573 回答
1

如果您在 C# 项目中获得此功能,请使用以下代码检查您是在 64 位还是 32 位模式下运行:

        if (IntPtr.Size == 4)
        {
            Console.WriteLine("This is 32-Bit!");
        }
        else if (IntPtr.Size == 8)
        {
            Console.WriteLine("This is 64 Bit!");
        }

如果您发现您在 64 位模式下运行,您可能想尝试切换到 32 位(反之亦然)。您可以按照本指南强制您的应用程序以 64 位或 32 位(分别为 X64 和 X86)运行。您必须确保Platform Target在您的项目中的属性未设置为Any CPU并且已明确设置。

在此处输入图像描述

将该选项从切换Any CPUX86解决我的错误,我能够连接到 Oracle 提供程序。

于 2016-07-11T14:40:41.077 回答
1

我的团队会时不时地在我们尝试安装我们平台的随机机器中偶然发现这个问题(我们使用 oracle 驱动程序 12c 版本 12.2.0.4,但我们在其他版本中也遇到了这个错误)

经过相当多的实验,我们意识到出了什么问题:

所述机器将具有正在使用机器范围的 Oracle 驱动程序的应用程序,它们会静默地锁定它们,并阻止 Oracle 驱动程序安装程序在尝试升级/重新安装所述 Oracle 驱动程序时发挥其魔力。最狡猾的“应用程序”将是在 IIS 等中运行的网站,因为这些应用程序本质上是在重新启动时自动启动。为了解决这个问题,我们执行以下操作:

  1. 禁止 IIS 在重新启动时自动启动。对在重新启动时自动启动的任何其他应用程序/服务执行相同的操作。
  2. 卸载任何以前的 Oracle 驱动程序并仔细检查注册表或文件夹中是否没有留下任何痕迹。
  3. 重启机器
  4. (重新)安装 Oracle 驱动程序并重新启用 IIS 和其他自动启动应用程序。
  5. 重新启动机器 <- 这很重要。除非您重新启动计算机,否则 Oracle 的 OLE DB 驱动程序将无法工作。

如果这不起作用,则重复冲洗,直到 OLE DB 驱动程序工作。希望这可以帮助那些努力弄清楚发生了什么的人。

于 2017-10-02T10:08:09.593 回答
0

在 Der Wolfs 提示的基础上,我卸载了 Oracle 客户端并再次安装,右键单击安装程序,并以管理员身份运行它。有效。

于 2013-04-17T14:08:28.880 回答
0

如果无法更改编译使用 x64,请尝试卸载 x64 版本的 odac 并安装 32 位版本。然后,不要忘记将安装目录(如 C:\oracle)和子目录 C:\oracle\bin 添加到 PATH 环境变量中。这在 .net 4 应用程序中对我有用。

于 2019-12-11T13:26:03.700 回答
0

不要忘记以管理员身份运行您的 cmd,否则您将收到误导性错误消息:

模块“OraOLEDB12.dll”可能与您运行的 Windows 版本不兼容。检查模块是否与 regsvr32.exe 的 x86(32 位)或 x64(64 位)版本兼容

于 2021-08-09T07:54:33.720 回答