尽管我已经安装了驱动程序,但无法将 Excel 连接到 Oracle。 (使用 Excel 的 PowerQuery)
Posted
技术标签:
【中文标题】尽管我已经安装了驱动程序,但无法将 Excel 连接到 Oracle。 (使用 Excel 的 PowerQuery)【英文标题】:Can't connect Excel to Oracle although I already installed the drivers. (Using Excel's PowerQuery) 【发布时间】:2020-07-03 21:51:43 【问题描述】:我已经尝试了一段时间,通过 PowerPivot 将 Excel 连接到 Oracle,但不幸的是没有成功。
我目前收到此错误:An error happened while reading data from the provider. 'Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.'
。
到目前为止,我已经完成了以下工作:
1.已安装 Oracle Client x64
我从https://www.oracle.com/database/technologies/112010-win64soft.html 安装了 Oracle Client x64。我使用了文件win64_11gR2_client.zip
。在安装过程中,我选择了InstantClient
2。安装了 Oracle 的 ODBC Instant Client x64
我去了https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html并下载了instantclient-basic-windows.x64-19.6.0.0.0dbru.zip
和instantclient-odbc-windows.x64-19.6.0.0.0dbru.zip
。我通过将它们解压缩到同一文件夹中并运行 odbc_install 来“安装”它们。
然后,我将该目录添加到我的路径环境变量中,然后创建一个名为 TNS_ADMIN 的新目录并添加相同的目录。
3.安装了 Oracle 的 ODBC Instant Client x32
最后我对 x32 文件做了同样的事情,但是我没有将该目录添加到我的环境变量中。
我通过在此处找到驱动程序验证了正确的安装:
x64 驱动程序:
x32 驱动程序:
故障排除帮助
令人沮丧的是,除了错误消息之外,我找不到任何解决此问题的方法。关于它可能是什么的任何想法?关于如何排除故障的任何想法?
谢谢!
【问题讨论】:
您运行的是 64 位 Excel 吗? odbc 驱动程序和 oracle 客户端的位架构(32 位与 64 位)必须与调用应用程序(在本例中为 Excel)相匹配。请注意,即使在许多 64 位 Windows 上,MS Office 套件仍然是 32 位的。 (什么时候 MS 最终会在 32 位应用程序的核心中占有一席之地?)。此外,如果您同时安装了 32 位和 64 位,请确保您想要的是系统 PATH 中的第一个。 安装多个 Oracle 客户端(即 32 位和 64 位各一个)通常是个坏主意。删除它们中的全部(请参阅***.com/questions/8450726/…)并根据您的 Excel 位大小安装一个 32 位或 64 位客户端。如果您需要同时安装 32 位和 64 位,请按照以下说明操作:***.com/questions/24104210/… @EdStevens,MS Office 也提供 64 位版本。用户必须检查他的机器上安装了哪个版本。您可以安装 32 位和 64 位,而无需反复修改 PATH,请参阅我上面的评论。 @WernfriedDomscheit - 感谢您的链接。只需澄清一点 - 我从未说过 Office 在 64 位中不可用。尽管有 64 位操作系统,但很多地方仍然安装 32 位。鉴于 32 位硬件现在如何成为博物馆藏品,我认为终止 32 位软件 - 操作系统 和 应用程序的时间已经过去了。 【参考方案1】:使用 32 位 Oracle Instant 客户端
使用 ODBC 驱动程序的选项 1
没有 ODBC 驱动程序和 ODAC 客户端的选项 2
选项 1: 安装 32 位 odbc 驱动程序后,尝试仅将 32 位即时客户端添加到路径,或者如果您将两个客户端都添加到系统路径,请确保 32 位客户端高于 64 位客户端
如果系统路径中的顺序设置正确,您可以在命令提示符下使用where
命令进行验证
C:\WINDOWS\system32>where sqlplus
D:\instantclient_19_6_x86\sqlplus.exe
D:\instantclient_19_6_x64\sqlplus.exe
或使用命令path
C:\WINDOWS\system32>path
PATH=D:\instantclient_19_6_x86;D:\instantclient_19_6_x64;xxxxx
如果设置正确就可以通过odbcFile--->From Other Sources --> From ODBC
连接
选项 2: 让您无需 ODBC 驱动程序即可通过 ODAC 客户端连接到数据库File--->From Database --> From Oracle Database
从 Oracle ODP.NET_Managed_ODAC122cR1.zip 下载 ODAC 32 位。
解压文件夹并从elevated command prompt
安装
D:\ODP.NET_Managed_ODAC122cR1>install_odpm.bat D:\instantclient_19_6_x86 x86 true
这里我将目标目录设置为 32 位即时客户端,即D:\instantclient_19_6_x86
编辑: 在 tnsnames.ora 和 tns_admin 系统变量中添加 tns 名称条目
即TNS_ADMIN= D:\instantclient_19_6_x86\network\admin
【讨论】:
"ODBC" 不是 "ODP.NET Managed Driver" 我不认为 Excel 可以使用 ODP.NET Managed Driver,所以在这种情况下它是没用的。除此之外,ODP.NET Managed Driver 不需要任何进一步的客户端安装,即 Oracle Instant Client。 不确定我在哪里提到“ODBC”是“ODP.NET 托管驱动程序”?Excel 有两个通过 ODBC 驱动程序和 ODAC 客户端连接 Oracle 数据库的选项,请refer 到该链接 ODAC 的意思是“Oracle 数据访问组件”,它只是各种 Oracle 驱动程序的总称。您解释了如何安装 ODP.NET 托管驱动程序,但是您不能在 Excel 中使用它,因此您的答案相当混乱。 微软提供的链接是ODTwithODAC,猜猜它安装了ODP.NET和臃肿的Oracle即时客户端,而不是我在现有即时客户端上安装ODP.NET托管驱动程序。我测试了所有场景底线无论是 ODBC 还是 ODAC Excel 仍然需要即时客户端(即使它可以与带有 ODAC 的 64 位即时客户端一起使用)。 我猜你混合了 ODP.NET(非托管驱动程序)和 ODP.NET 托管驱动程序。 ODP.NET Managed Driver 是一个独立的 DLL,不包含或不依赖于任何进一步的 Oracle 客户端安装,您不能在 Excel 中使用它(至少到目前为止我从未见过这样的工作例子)。这对应于您的陈述“Excel 仍然需要即时客户端”。也许看看this list,看看我的意思。以上是关于尽管我已经安装了驱动程序,但无法将 Excel 连接到 Oracle。 (使用 Excel 的 PowerQuery)的主要内容,如果未能解决你的问题,请参考以下文章
我已经创建了 React 本机应用程序并将其构建为独立的 android apk 文件,但如果不连接到同一网络,我将无法使用它
尽管主机说它正在侦听端口,但无法使用 drda 连接到另一台机器上的 informix
我的电脑WORD可以打印预览,但EXCEL不可以分页预览,连页面设置都不行....PRINT SPOOLER已经打开了