我试图从Excel工作表连接到我们服务器上的Oracle数据库,但我无法理解原因。
我目前在不同的ORACLE_HOME
中安装了 32位和64位Oracle 12c,并在我的64位计算机上安装了32位Excel。
我尝试使用新查询向导尝试连接到Excel中的Oracle数据库。
当我点击从Oracle数据库时,我收到以下错误/消息。
我可以继续使用当前的提供程序,但是当我真正尝试连接到数据库时,我得到了这个:
我不明白为什么当我的计算机上安装了32位和64位版本的Oracle 12c时,我会收到此错误。两者都包含在我的PATH
变量(32位优先)中,我还包含一个特定的ORACLE_HOME
和TNS_ADMIN
来指向我的32位安装,因为我的excel是32位
我真的希望能够通过Excel从数据库进行查询,但这个问题让我感到困惑。
修改
我刚刚将我的Oracle主页中的ODBC驱动程序添加到ODBC数据源管理员工具中。
目前它可以通过此工具进行连接。
但是当我尝试连接到 ODBC Connection 向导时,我知道得到这个:
任何想法?
答案 0 :(得分:1)
您是如何安装32位和64位Oracle客户端的?
您的Excel是32位,您尝试使用32位Oracle。我假设您启动了64位版本的" ODBC管理员" - 可能存在不匹配。或者您PATH
关于%ORACLE_HOME%
和/或%ORACLE_HOME%\bin
文件夹的问题
您的Excel是32位,所以一般来说,通过将32位客户端放入PATH
和ORACLE_HOME
来实现正确的方法,您不能在一个进程中混合使用32位和64位程序集。顺便说一句,当您按照上面的说明操作时,Windows会自动管理它。
我假设你安装了Oracle Instant Client。默认的Instant Client既不包含任何ODBC驱动程序也不包含Oracle数据提供程序(ODP.NET,Oracle.DataAccess.Client
)
您可能有2个ODBC驱动程序,一个来自Oracle,通常称为 Oracle in OraClient12_home1 ,另一个来自Microsoft,名为 Microsoft ODBC for Oracle (默认情况下应安装Windows)安装,但它也需要Oracle客户端。
Oracle的ODBC驱动程序可用于32位和64位,Microsoft驱动程序仅适用于32位。您有2个ODBC管理员,32位(运行c:\Windows\SysWOW64\odbcad32.exe
)和64位(运行c:\Windows\System32\odbcad32.exe
)。你应该看到安装的驱动程序32 resp。 64位。
对于数据提供者,您有类似的情况。您有一个来自Microsoft( Microsoft .NET Framework数据提供程序for Oracle ,System.Data.OracleClient
)和Oracle( Oracle Data Provider for .NET ,{{1} ,几个版本)。两者都可用于32位和64位。
原则上,使用哪个驱动程序/提供程序连接到Oracle并不重要 - 只需要架构(即32位与64位)匹配。每个驱动程序/提供程序都需要安装Oracle客户端Microsoft的所有驱动程序/提供程序都已弃用,您应该更喜欢Oracle(如警告消息中所述)
Oracle还提供 ODP.NET,托管驱动程序,它不需要任何进一步的Oracle客户端安装,并且可以在32位和64位上运行。但是,我不知道您是否可以在Excel中使用它。
最后但同样重要的是,您还拥有OLE DB提供程序。另一个来自Microsoft( Microsoft OLE DB Provider for Oracle )和一个来自Oracle( Oracle Provider for OLE DB )。 Microsoft提供程序仅适用于32位,已被弃用。