Oracle即时客户端12_1 + odbc运行时错误

时间:2016-11-30 08:22:01

标签: oracle vba odbc driver instantclient

在工作中,我在access vba中编写了一些内容来自动创建邮件并将其发送出去。要获得所需的所有信息,我需要访问我公司的服务器。 一切都适合我:编程vba,在C:\Oracle\instantclient_12_1(均为32位)安装了oracle即时客户端12_1和odbc部分,安装了odbc_install.exe并在同一个文件中创建了tnsnames.ora文件。目录

当我尝试为同事做同样的事情时,最终: Run-time Error '-2147467259 (80004005) [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 出现。

我完全不知道为什么。试图安装64位驱动程序,这显然不起作用:P尝试更改vba和tnsnames.ora文件中的连接字符串......

我还没有创建用户-dsn连接,我真的想避免这样做,并不是真的有必要。

您是否了解可能存在的问题或解决方法?

以下是我在vba中使用的连接字符串:

Set CMDB_cn = New ADODB.Connection Set CMDB_rst = New ADODB.Recordset Dim strConnect, str1 As String strConnect = "Driver={Oracle in instantclient_12_1};Dbq=blabla;Uid=user;Pwd=swordfish;" str1 = "select * From db.table WHERE Name = 'Mr. Nobody';" CMDB_cn.Open strConnect

和tnsnames.ora:

blabla=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=123.456.789.123)(PORT=1234)))(CONNECT_DATA=(SID=serverName)(SERVER=DEDICATED)))

2 个答案:

答案 0 :(得分:0)

“在同一目录中创建tnsnames.ora - 文件”是什么意思“

tnsnames.ora文件的位置可以通过以下几种方式确定:

  • 运行.exe文件所在的目录。 (对于MS-Access程序文件夹,很可能不是一个明智的想法)
  • 您当前的工作目录
  • 环境变量TNS_ADMIN
  • 指定的文件夹
  • 注册表值HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_OraClient12_1_home1\TNS_ADMIN(或类似)
  • 中指定的文件夹
  • 文件夹%ORACLE_HOME%\network\admin,即C:\Oracle\instantclient_12_1\network\admin

我不知道所有这些条件是否适用于ODBC,我也不知道优先顺序,我从未找到任何关于它的文档。

您应该检查所有这些,通常环境变量TNS_ADMIN具有最高优先级。

实际上我不知道Connection-String是否区分大小写。请尝试使用DBQ代替Dbq

不过,您是否再次删除了64位Oracle客户端?如果没有,那么您的PATH变量仍可能指向64位客户端,该客户端不能与32位Access和32位ODBC驱动程序一起使用。

答案 1 :(得分:0)

谢谢,Wernfried!你让我走向正确的方向!

我没有在其他计算机上创建环境变量:

Oracle_Home - >文件夹的路径,例如C:\ ORACLE \ instantclient_12_1 TNS_ADMIN - > tnsnames.ora文件的路径,例如C:\ Oracle \ instantclient_12_1 \ network(或者保存它的任何地方!)

现在重启。

代码中的连接(对我来说是vba)现在将找到tnsnames文件,并能够解析数据库的连接字符串。

相关问题