【问题标题】:Connect to an Oracle db with ADODB using excel VBA使用 excel VBA 连接到带有 ADODB 的 Oracle 数据库
【发布时间】:2016-07-19 20:33:51
【问题描述】:

我在 ADODB 中使用这个连接字符串模式

Set oConn = New ADODB.Connection
oConn.ConnectionString = "User ID=USERNAME;Password=PW;Data Source=xxxxxxx.db.yyyy.com:port;Provider=OraOLEDB.Oracle; "
oConn.ConnectionTimeout = 30
oConn.Open
rs.CursorType = adOpenForwardOnly

当我打开连接时会出现运行时错误

ORA-12504:TNS:listener 未在 CONNECT_DATA 中指定 SERVICE_NAME

我也尝试过使用这个连接字符串

"ODBC;DRIVER={Oracle in OraClient11g_home2};" & _
"DBQ=" & inputHost & ";UID=" & inputUser & ";PWD=" & inputPassword & ";" & _
"HOST=" & inputHost & ";PORT=1521;DB=" & inputHost & ";" & _
"DefaultIsolationLevel=READUNCOMMITTED"

我得到了运行时错误

[Microsoft][ODBC Driver Manager] 未找到数据源名称,未指定默认驱动程序

【问题讨论】:

  • 根据我有限的经验,这意味着您需要编辑 tnsnames.ora 文件以包含或修复此连接。
  • 可以在connectionstrings.com寻求帮助

标签: oracle vba excel oracle11g


【解决方案1】:

我认为Data Source=xxxxxxx.db.yyyy.com:port 是问题所在。您应该提供文件 tnsnames.ora 中定义的 TNS 别名,而不是“ServerName.Domain:Port”。

我不知道 OLEDB 提供者是否支持 Easy Connect 命名方法。您是否在 sqlnet.ora 文件中指定了 NAMES.DIRECTORY_PATH=(tnsnames, ezconnect) 之类的内容?

【讨论】:

  • 那么我应该使用什么样的连接字符串模式呢?
  • 最终只需要使用 ConnectionString = _ "DRIVER={Oracle in OraClient11g_home1};" & _ "DBQ={{来自 tnsnames.ora}};UID=xxxxx;PWD=xxxx;"
猜你喜欢
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 1970-01-01
  • 2014-04-04
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多