#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.