【发布时间】:2021-10-08 04:36:53
【问题描述】:
通过以下文本的设置,我成功连接并从数据库中检索数据。有一次,在执行宏时,我的 PC(Windows 10)断电,从那一刻起,我每次尝试连接到 DB(仅在我尝试通过 VBA 连接时)都会收到错误消息,如下所示消息:
运行时错误“-2147467259 (80004005)”:
[Microsoft][Oracle 的 ODBC 驱动程序][Oracle]尝试检索错误 ORA 的文本时出错-01019
我收到的错误来自命令“cn.Open (strConnection)”的行
我已经安装了 ODAC 12c 32 位,因为我有 Excel 32 位。
我认为此错误是活跃的,因为来自某些寄存器的信息在 PC 在检索数据时断电后被锁定,但我找不到它。
任何帮助或提示都是宝贵的给我。
提前致谢
配置为:
环境变量:ORACLE_HOME = C:\app\client\xxxx\product\12.2.0\client_1
PATH = C:\app\client\xxxx\product\ 12.2.0\client_1\Network\Admin
PATH = C:\app\client\xxxx\product\12.2.0\client_1\Network\Admin\bin
参考 - VBAProject:
Visual Basic for Applications
Microsoft Excel 16.0 对象库
Microsoft Forms 2.0 对象库
Microsoft ActiveX 数据对象 2.8 库
Microsoft ActiveX 数据对象 Recordset 2.8 库
Microsoft OLE DB Simple Provider 1.5 库
OraOLEDB 1.0 类型库
活动服务:
OracleOraClient12Home1_32bitMTSRecoveryService
我尝试卸载 Oracle 客户端并重新安装,但没有成功。此外,我创建了 ORACLE_HOME 变量并尝试了更多不同的连接字符串变体和包含的引用组合,但错误仍然相同。
Dim strConneciton As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
strConneciton = "Driver={Microsoft ODBC for Oracle};" & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=xxx.xxxx.xxx)(PORT=1521)" & _
"(CONNECT_DATA=(SERVICE_NAME=xxxxx)));user id=user1;password=1234;")
cn.Open (strConneciton)
If cn.State = adStateOpen Then
cn.Close
MsgBox "Completed!"
Else
MsgBox "Connection failed!"
End If
【问题讨论】:
-
尝试将
C:\app\client\xxxx\product\12.2.0\client_1\bin和C:\app\client\xxxx\product\12.2.0\client_1添加到您的%PATH% -
尝试使用 Oracle
{Oracle in OraClient12_home1}的 ODBC 驱动程序,而不是 Microsoft{Microsoft ODBC for Oracle}的驱动程序 - 驱动程序的确切名称可能略有不同。签入 ODBC 管理器(32 位版本!)
标签: excel vba oracle database-connection oracle12c