You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA宏连接Oracle数据库时如何单独指定代理用户ID?

问题原因

你的报错是因为微软自带的Oracle ODBC驱动不支持你写的Uid=userid[代理用户ID]的代理身份认证格式,导致凭证校验失败。单独填userid可以连接成功是因为跳过了代理认证,自然没有对应表的访问权限,和SQL Developer里的表现一致。


解决方法

方法1:修改现有连接字符串配置

把代理用户ID单独放到CONNECT_DATA节点的PROXY_USER参数中即可,修改后的代码如下:

Sub Ora_Connection()
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Set rs = New ADODB.Recordset

' 请将代码中的“你的代理用户ID”替换为你原来方括号内的代理用户信息
StrCon = "Driver={Microsoft ODBC for Oracle}; Uid=userid;Pwd=UserPWD;" & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=HostName)(PORT=1521))" & _
"(CONNECT_DATA=(SERVICE_NAME=XXXX)(PROXY_USER=你的代理用户ID)));"
con.Open StrCon
End Sub

如果上述配置仍然报错,可尝试将UID字段调整为你的代理用户ID[userid]的格式,适配部分旧版本驱动的语法要求。

方法2:替换为Oracle官方驱动(推荐)

微软自带的Microsoft ODBC for Oracle驱动已停止维护多年,对Oracle新特性兼容性差,建议安装Oracle官方的ODAC驱动,连接时代理用户配置逻辑和方法1一致,稳定性更高。

连接成功后如果仍然无法查询目标表,执行SQL语句ALTER SESSION SET CURRENT_SCHEMA = 目标表所属的Schema名称切换当前schema即可。


内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:24:03