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, к которому он относится в операторе пути. Были некоторые дискуссии о том, как обойти это, но ваш лучший выбор - запустить одного клиента на машину.