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

时间:2012-10-15 20:21:16

标签: c# .net windows oracle

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

当我点击按钮连接到数据库时,我遇到有关oracle提供程序未在本地计算机上注册的错误。

我将非常感谢您如何快速解决这个问题的明确,一步一步的概述。

确切的错误消息是:

  

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

13 个答案:

答案 0 :(得分:41)

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

  1. 以管理员模式打开命令提示符
  2. cd \oracle\product\11.2.0\client_64\BIN
  3. c:\Windows\system32\regsvr32.exe OraOLEDB11.dll

答案 1 :(得分:5)

进行以下测试:

打开命令提示符并键入: tnsping instance_name

其中instance_name是您要连接的实例的名称(如果它是XE数据库,请使用“tnsping xe”

如果它返回ok,请按照Der Wolf的回答的步骤进行操作。如果没有回复,请按照Annjawn的答案执行。

在这两种情况下都解决了我。

答案 2 :(得分:5)

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

确保选项'启用32位应用程序'在应用程序池的高级配置上设置为 true

答案 3 :(得分:4)

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

答案 4 :(得分:2)

如果你有64位的Windows,尝试先安装oracle驱动程序32位然后再安装64位驱动程序,这就是我的工作和工作

答案 5 :(得分:2)

花了好几个小时来解决这个问题;对于未正确安装它的人,您需要卸载当前版本并以管理员enter image description here

重新安装

答案 6 :(得分:1)

在我更改了平台目标后,它才对我有用。到' x64' (考虑到我使用的是Oracle 12c 64位)

为此,我做了:

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

  2. 点击' Build' (在新打开的窗口中)

  3. 更改了平台目标'来自'任何CPU'到' x64'

  4. 解决了这个问题。

答案 7 :(得分:1)

如果您使用C#projet进行此操作,请使用以下代码检查您是在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位(反之亦然)。您可以follow this guide强制您的应用程序以64位或32位(分别为X64和X86)运行。您必须确保项目属性中的Platform Target未设置为Any CPU并且已设置为explicitley。

enter image description here

将该选项从Any CPU切换到X86解决了我的错误,并且我能够连接到Oracle提供商。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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

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

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

  1. 禁止IIS在重新启动时自动启动。对重启时自动启动的任何其他应用/服务执行相同的操作。
  2. 卸载以前的所有Oracle驱动程序,并仔细检查注册表或文件夹中是否留下痕迹。
  3. 重新启动机器
  4. (重新)安装Oracle驱动程序并重新启用IIS和其他自动启动应用程序。
  5. 重新启动机器< - 这很重要。除非重新启动计算机,否则Oracle的OLE DB驱动程序将无法运行。
  6. 如果这不起作用,则冲洗重复,直到OLE DB驱动程序工作。希望这可以帮助那些努力弄清楚正在发生什么的人。

答案 10 :(得分:0)

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

答案 11 :(得分:0)

只需检查您安装的是哪种架构

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

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

# ODBC-drivers
Get-OdbcDriver | select Name,Platform

答案 12 :(得分:0)

不要忘记以管理员身份运行你的 cmd 否则你会得到误导性的错误信息:

<块引用>

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