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