TNS, не может обработать имя службы, когда две разные версии установлены вместе

На нашем сервере мы публикуем приложение asp.net, которое использует oracle11g в качестве базы данных.

Мы просто устанавливаем строку подключения в web.config, она работает.

Однако кто-то устанавливает oracle8 на тот же сервер, так как он нужен им в другом клиентском приложении.

Но после этого наше веб-приложение может не работать, мы получаем ошибку:

ora-12154 TNS не обрабатывает название сервиса

Затем я обнаружил, что путь среды изменился. Сначала добавляется "C:/app/oracle81/bin". Но даже я сначала изменяю "D:/app/oracle11g/bin", он тоже не работает.

Любая идея, чтобы заставить оба работать?

2 ответа

Решение

Вы можете выяснить, какие драйверы используются в.NET ... Устаревший поставщик Oracle от Microsoft, собственный поставщик Oracle или какой-либо поставщик ODBC, работающий поверх нескольких типов возможных драйверов в DSN. Каждый может быть исправлен по-своему.

Но похоже, что установка Oracle 8 каким-то образом украла приоритет над установкой Oracle 11, а не просто переменной среды "PATH". Мое предположение будет в реестре. В порядке возрастания неудобств и эффективности вы можете попробовать:

1) Запустите установщик Oracle 11 и посмотрите, знает ли он о доме Oracle 8. (Маловероятно, если это 8.0). Установите его как значение по умолчанию или верхнюю часть списка; выход; затем вернитесь и установите Oracle 11 как значение по умолчанию / верхнюю часть списка.

2) Настройте записи TNS в вашем домашнем сервере Oracle 8 для подключения к вашей базе данных Oracle 11. Живите с тем, что вы используете очень устаревший клиент.

3) Удалите и переустановите Oracle 11, чтобы заставить его украсть приоритет.

По умолчанию.net Framework использует каталог FIRST oracle, к которому он относится в операторе пути. Были некоторые дискуссии о том, как обойти это, но ваш лучший выбор - запустить одного клиента на машину.

Другие вопросы по тегам