ODBC数据源连接成功,但VBScript中未解决TNS

时间:2019-02-12 20:09:35

标签: oracle vbscript odbc tnsnames tns

我正在尝试从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"   

如何从脚本连接到数据库?

ODBC Success

ODBC Admin

Error

1 个答案:

答案 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