Сайт IIS не подключается к базе данных Oracle - PullRequest
0 голосов
/ 25 мая 2018

У меня есть сервер с IIS, на котором размещаются веб-сайты.Некоторые из этих веб-сайтов (Silverlight) должны подключаться к базе данных Oracle для выполнения запросов через OleDb, но они не могут.

Вот результаты того, что я тестировал:

  • поставщик «msdaora» не зарегистрирован на локальном компьютере , когда я запускаю его на веб-сайте

  • ORA-01019: невозможно выделить память впользовательская сторона (когда я пытаюсь подключиться к тестовой консольной программе без статуса администратора)

  • Соединение в порядке (с той же тестовой консольной программой, со статусом администратора)

  • ORA-12154: TNS: не удалось разрешить указанный идентификатор подключения, указанный , при попытке переключиться на другой метод подключения (из OleDb в Oracle.ManagedDataAccess.Client)

Я просмотрел бесчисленные сведения об ошибках такого рода, но не смог найти какое-либо работающее решение.Вот что я протестировал:

  • , дающий право "создавать глобальные объекты" соответствующим пользователям (без изменений)
  • установка нескольких клиентов Oracle один за другим.Лучший результат - с клиентом 10.2 64b (к которому моя тестовая программа может подключиться, имея права администратора).Установка чистая (нет нескольких папок Oracle и нескольких переменных среды Oracle одновременно)
  • отключение предупреждений, касающихся повышения прав администратора (т. Е. Подтверждение не появляется во время повышения прав): никаких изменений вообще нет

  • проверка использования ОЗУ (много памяти под ногой)

Дополнительные сведения:

  • Строка подключения

Provider=msdaora;Data Source=HOSTNAME;User Id=USER;Password=PASSWORD

  • Та же строка подключения, которая используется с OleDb и Oracle.ManagedDataAccess.Client.

  • Имена именФайл .ora существует (и работает, как показывает моя успешная попытка с помощью программы тестирования администратора)

  • Он работает на старом веб-сервере, но для меня слишком много различий, чтобы найти какой-либозначимый (другая Windows, 32 / 64b, разные версии IIS, другой клиент Oracle)

Есть идеи?

1 Ответ

0 голосов
/ 25 мая 2018

Есть несколько пунктов:

  • Поставщик Microsoft msdaora для OLE DB устарел для возрастов.Вы должны предпочесть, чтобы поставщик Oracle OraOLEDB.Oracle.

  • клиент Oracle и поставщик OLE DB и приложения IIS должны иметь одинаковую архитектуру,т.е. все должны быть 32-битными или 64-битными, вы не можете смешивать их.(древний msdaora недоступен для 64 бит).Однако управляемый драйвер ODP.NET (Oracle.ManagedDataAccess) работает как для 32-разрядных, так и для 64-разрядных.

  • Если вы используете управляемый драйвер ODP.NET, тогда Provider=MSDAORA не требуется в ConnectionString,Я предполагаю, что такие атрибуты игнорируются, или вы просто не упомянули об этом.

  • Версия Oracle Client и поставщик OLE DB должны совпадать (даже младшая версия).Из-за ограничений COM нельзя устанавливать более одного поставщика OLE DB для 32-битного и 64-битного каждого.

  • Шаблон поиска для файла tnsnames.ora в OLE DB отличается от шаблона поиска в ODPУправляемый драйвер .NET.Проверьте следующие элементы:

    • OLE DB считывает ваш реестр для значения TNS_ADMIN, управляемый драйвер ODP.NET - нет.
    • Управляемый драйвер ODP.NET использует ваш файл конфигурации .NET(т. е. web.config, machine.config) для определения местоположения файла tnsnames.ora OLE DB этого не делает.
    • Согласно документации Управляемый драйвер ODP.NET учитывает TNS_ADMIN Переменная среды и папка %ORACLE_HOME%\network\admin.Однако, согласно моим тестам, это так или иначе.
  • Относительно сбоя соединения зависит от разрешения «Rus as Administrator» проверить вашу папку установки Oracle.

...