Соединение с источником данных ODBC успешно, но TNS не разрешено в VBScript
Я пытаюсь установить соединение с БД Oracle из VBScript. Я добавил все переменные окружения, и код может найти файл 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"
Как я могу подключиться к базе данных из скрипта?
1 ответ
Вы смешиваете несколько тем.
Вы скрываете имя 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 имеет ту же архитектуру, т. Е. 32-разрядную или 64-разрядную, что и ваша среда VBS.
Либо использовать %windir%\system32\odbcad32.exe
+ %windir%\system32\cscript.exe
или же %windir%\SysWOW64\odbcad32.exe
+ %windir%\SysWOW64\cscript.exe