我正在使用它连接到Oracle:
Set mDBConnection = New ADODB.connection
Dim Rett As String
Rett = "CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)"
Rett = Rett & "(HOST=myhost)(PORT=1521))(CONNECT_DATA =(SERVICE_NAME = myservice)));"
Rett = Rett & "uid=" & mDBUser & ";"
Rett = Rett & "pwd=" & mDBPassword & ";"
MsgBox Rett
mDBConnection.Open "DRIVER={Microsoft ODBC for Oracle};" & Rett
如果密码不包含符号@,则此方法可以正常工作。 如果是的话 - 我收到了这个错误:
[Microsoft] [Oracle的ODBC驱动程序] [Oracle] ORA-12154:TNS:无法解析指定的连接标识符
如何摆脱这个符号?也许我应该以不同的方式联系?
答案 0 :(得分:2)
在11g之前,您甚至无法在密码中使用@ sign,因为它是标准Oracle连接字符串的一部分(即,sql*plus> connect scott/tiger@test
连接到test
实例)。在第一个字符达到10g之后,您只被允许_,$和#(在下面称为特殊字符)。显然,如果您使用这样的字符,您使用的驱动程序无法处理所需的双引号,因此我建议您更改驱动程序或密码。
您必须将以下密码括在双引号中:
包含多字节字符的密码。
以数字或特殊字符开头且包含的密码 字母字符。例如:
则 “123abc”
“#ABC”
“123dc $”
包含除字母字符以外的任何字符的密码, 数字和特殊字符。例如:
“ABC>” 中
“ABC @”,
“”
有关完整信息,请参阅Guidelines for Securing Passwords。
答案 1 :(得分:1)
ODBC驱动程序“Microsoft ODBC for Oracle”多年来都是deprecated,您不应该使用它。文档说“完全支持Oracle 7.3x; Oracle8支持有限”。安装ODBC driver from Oracle,这应该会更好。
你的连接命令就像这样:
mDBConnection.Open "DRIVER={Oracle in OraClient11g_home1};dbq=" & mDBServer & ";" & _
"uid=" & mDBUser & ";pwd=""" & mDBPassword & """;"
如果您不知道ODBC驱动程序的确切名称,可以在HKLM\Software\ODBC\ODBCINST.INI\*\Drivers
搜索注册表以查找字符串SQORA32.dll
。父键告诉ODBC驱动程序的确切名称。
您也可以像这样使用OLE DB提供程序:
mDBConnection.Open "Provider=OraOLEDB.Oracle;Data Source=" & mDBServer & ";" & _
"User ID=" & mDBUser & ";Password=""" & mDBPassword & """;"
与ODBC类似,您不知道其他计算机上是否安装了驱动程序/提供程序。