открыть oracle conn без tnsnames.ora

#oracle #asp-classic

#Oracle #asp-classic

Вопрос:

у меня есть старое приложение asp, работающее на oracle 9g, и я использую объект OracleInProcServer.XOraSession для подключения к базе данных

 Set OraSession = Server.CreateObject("OracleInProcServer.XOraSession") 
Set OraBanco   = OraSession.DbOpenDatabase("ORADB01","Username/Password",cint(0))
  

итак, у меня есть этот ORADB01, зарегистрированный в моем tnsnames.ora

теперь допустим, мне нужно открыть соединение с базой данных, которую я не зарегистрировал в своем tnsnames.ora … есть ли какой-нибудь способ открыть соединение с помощью OracleInProcServer.XOraSession?

Ответ №1:

Не проверено, но стоит попробовать:

 Set OraBanco = OraSession.DbOpenDatabase("YourServerName:1521/ORADB01","User/Pass",cint(0))
  

По крайней мере, это работает для связывания базы данных Oracle с SQL Server.

Это не относится к вашей XOraSession, но вы даже можете поместить всю информацию о подключении в строку подключения ODBC:

 Provider=OraOLEDB.Oracle.1;Password=***;User ID=username;Data Source="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
    (HOST=YourDatabaseServer)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME = ORADB01)))"
  

Комментарии:

1. я попробовал это, и, к сожалению, это не сработало. я могу сделать что-то подобное при использовании ADODB.Connection . если у меня есть соединение с моим tnsnames.ora, я могу открыть соединение следующим образом: objConn.Open "DSN=oradb01;Uid=user;Pwd=pass;" . но , если его нет в моих tnsnames, я мог бы открыть соединение таким образом: objConn.Open "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=oradb01.mydomain.com))); uid=user;pwd=pass;"

2. Извините, что я не смог дать вам реальное решение. Похоже, вы будете привязаны к использованию tnsnames.ora при подключении вашей XOraSession.

3. У меня была точно такая же проблема, и ваше предложение сработало для меня.

Ответ №2:

У вас должен быть какой-то клиент Oracle, доступный, установленный и доступный на вашем компьютере. вы можете открыть какое-либо соединение с oracle, используя //127.0.0.1:1521/XE , поскольку это Oracle XE, а не 9i, вы используете ASP, лучшей идеей было бы

Либо определите ODBC-соединение на уровне компьютера, либо используйте DNS-файл, и на вашем ASP-сервере должен быть доступен клиент oracle.

или, если ваш сервер asp и компьютер одинаковы, вы можете использовать IPC соединение с сервером

я сделал это с 10G и XE, и это работает нормально, вы должны проверить, может ли это работать для вас на 9i.

я не знаю о 9G, я думаю, это был 9i.