我正在尝试从VBScript连接到Oracle DB。我已经添加了所有环境变量,并且代码可以找到TNSNAMES.ora的文件,但无法解析连接。
当我从ODBC数据源管理器测试连接性时,得到了“成功”结果,但是我仍然无法从代码中访问它。
con.ConnectionString = "DSN=DATA;Uid=wh;Pwd=pwd;"
con.Open 'This is where it fails
我尝试了许多连接字符串,但都失败了
OracleConnString = "Driver={Oracle in instantclient_18_3};server=server;database=db;trusted_connection=Yes;"
DB_CONN_STRING = "Driver={Oracle in instantclient_18_3}; " & _
"(DESCRIPTION=" & _
"(ADDRESS = (PROTOCOL = TCP)(HOST = host)(PORT = port)" & _
"(CONNECT_DATA=(SERVICE_NAME=srv_name)))"
CONN_STRING = "CONNECT wh/pwd@//host/db"
如何从脚本连接到数据库?
答案 0 :(得分:2)
您混合了几个主题。
您隐藏了DSN名称和“数据源名称”,因此无法为您提供正确的连接字符串。
如果您想使用ODBC DSN,则连接字符串必须为
DSN=▇▇▇▇DATA;Uid=myUsername;Pwd=myPassword
但是,您必须创建一个系统 DSN,而不是一个用户 DSN(请参见ODBC DSN)。但是,通常您不使用ODBC DSN,因为您必须在目标计算机上创建DSN,这是额外的配置工作。
没有DSN的连接字符串将是
Driver={Oracle in instantclient_18_3};Dbq=?????;Uid=myUsername;Pwd=myPassword;
or
Driver={Oracle in instantclient_18_3};Server=?????;Uid=myUsername;Pwd=myPassword;
请参阅https://www.connectionstrings.com/oracle-in-oraclient11g_home1/
如果您使用完整的数据库名称,例如(DESCRIPTION=...
,则不需要任何tnsnames.ora
文件。该文件的目的是解析该完整数据库名称的别名。
确保ODBC驱动程序与VBS环境具有相同的体系结构,即32位或64位。
使用%windir%\system32\odbcad32.exe
+ %windir%\system32\cscript.exe
或%windir%\SysWOW64\odbcad32.exe
+ %windir%\SysWOW64\cscript.exe