ODBC 数据源连接成功但 TNS 在 VBScript 中未解析

ODBC Data Source Connection Successful but TNS Unresolved in VBScript

我正在尝试从 VBScript 连接到 Oracle DB。我已经添加了所有环境变量,代码可以找到 TNSNAMES.ora 的文件,但无法解析连接。

当我从 ODBC 数据源管理器测试连接时,我得到了 'Success' 结果,但我仍然无法从代码访问它。

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"   

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

你混合了几个主题。

您隐藏了 DSN 名称和 "Data Source Name",这样就无法为您提供正确的连接字符串。

如果您喜欢使用 ODBC DSN,则连接字符串必须是

DSN=▇▇▇▇DATA;Uid=myUsername;Pwd=myPassword

但是,您必须创建 System DSN,而不是 User 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