我试图使用以下代码在 Access2016 VBA 中连接远程 Oracle 数据库:
Public Sub OpenConn()
Dim adConn As ADODB.Connection
Dim myDSN As String
Set adConn = New ADODB.Connection
myDSN = "Provider=OraOLEDB.Oracle;DSN=111.111.111.11:1521/orcl;USER ID=xxxx;PASSWORD=xxxx;Persist Security Info=True"
adConn.Open myDSN
end sub
但它不起作用并给出了一个
'运行时错误 3706'
. 我试过了
myDSN="Driver=Oracle in OraDb11g_home1;DSN=111.111.111.11:1111/orcl;USER ID=xxxx;PASSWORD=xxxx;Persist Security Info=True"
它也没有帮助,并给出了“运行时错误 -2147467259(80004005)”
有人可以帮忙吗?
非常感谢
DSN 是用户创建的具有特定连接设置的文本/xml 脚本,以避免直接在代码中编写它们。通常 DNS 用于 ODBC 而不是 OLEDB 连接。我相信 Oracle 使用 TNS 别名。
目前,在您的两次尝试中,您都没有分配命名的 DSN 文件,而是将其分配给服务器/主机名。您的整体问题可以像将DSN替换为Data Source或DBQ一样简单。请注意用户名和密码命名的参数不同。
' OLEDB
myDSN = "Provider=OraOLEDB.Oracle;Data Source=111.111.111.11:1521/orcl;" _
& "USER ID=xxxx;PASSWORD=xxxx;Persist Security Info=True"
' ODBC
myDSN = "Driver={Oracle in OraClient11g_home1};DBQ=111.111.111.11:1521/orcl;" _
& "UID=xxxx;PWD=xxxx;Persist Security Info=True"
对于 TNS 别名连接,文件中定义了以下My_OraDB别名tnsnames.ora
。
' OLEDB
myDSN = "Provider=OraOLEDB.Oracle;Data Source=My_OraDB" _
& "USER ID=xxxx;PASSWORD=xxxx;Persist Security Info=True"
' ODBC
myDSN = "Driver={Oracle in OraClient11g_home1};DBQ=My_OraDB;" _
& "UID=xxxx;PWD=xxxx;Persist Security Info=True"
或者,在创建未指定Driver和DBQ参数的命名 DSN 之后:
' ODBC
myDSN = "DSN=My_DSN;UID=xxxx;PWD=xxxx"
确保 ODBC 驱动程序与您的应用程序位类型一致。您可以通过位于 32 位 (C\windows\sysWOW64) 或 64 位 (C:\Windows\System32) 的 odbcad32.exe 构建特定的 DSN。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句