我刚刚从XP迁移到Win 7.我猜这个错误与切换操作系统有关。我写了一个.net应用程序,基本上按摩了大量数据,然后连接到数据库并插入/更新表。
当我点击按钮连接到数据库时,我遇到有关oracle提供程序未在本地计算机上注册的错误。
我将非常感谢您如何快速解决这个问题的明确,一步一步的概述。
确切的错误消息是:
'OraOLEDB.Oracle.1'提供程序未在本地计算机上注册
答案 0 :(得分:41)
在Windows 7 64位上安装64位Oracle客户端后,我遇到了同样的问题。对我有用的解决方案:
cd \oracle\product\11.2.0\client_64\BIN
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)
;C:\oracle\product\10.2.0\client_1\bin
答案 4 :(得分:2)
如果你有64位的Windows,尝试先安装oracle驱动程序32位然后再安装64位驱动程序,这就是我的工作和工作
答案 5 :(得分:2)
答案 6 :(得分:1)
在我更改了平台目标后,它才对我有用。到' x64' (考虑到我使用的是Oracle 12c 64位)
为此,我做了:
右键单击项目名称(在解决方案资源管理器面板中,一般位于左侧)
点击' Build' (在新打开的窗口中)
更改了平台目标'来自'任何CPU'到' x64'
解决了这个问题。
答案 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。
将该选项从Any CPU
切换到X86
解决了我的错误,并且我能够连接到Oracle提供商。
答案 8 :(得分:0)
在Der Wolfs提示的基础上,我卸载了Oracle客户端并重新安装,右键单击安装程序,然后以管理员身份运行。它奏效了。
答案 9 :(得分:0)
我的团队偶尔偶然发现这个问题,我们会尝试安装我们的平台的随机机器(我们使用oracle驱动程序12c ver 12.2.0.4,但我们也遇到了其他版本的bug)
经过相当多的实验,我们意识到出了什么问题:
所述机器将拥有使用机器范围的oracle驱动程序静默锁定它们并防止oracle驱动程序安装程序在尝试升级/重新安装所述oracle驱动程序时发挥其魔力的应用程序。最狡猾的“应用程序”将是在IIS等运行的网站,因为这些应用程序基本上是在重新启动时自动启动。为了解决这个问题,我们执行以下操作:
如果这不起作用,则冲洗重复,直到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 位)版本兼容