4

У нас есть требование, чтобы наши продукты работали на Oracle, а также на SQL Server (вокруг которого они были изначально созданы). К сожалению, у нас нет опыта разработки Oracle в Oracle, но, как старший разработчик, мне пришлось возглавить проект. До сих пор мне удалось сделать наше приложение подключиться к базе данных Oracle (я использую Oracle XE 11.2), используя следующую строку соединения:Строка соединения Oracle с аутентификацией Windows

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=VS010-ORA11GR1)(PORT=1523))(CONNECT_DATA=(SERVICE_NAME=DEVORA)));User Id=dbo;Password=dbo; 

Поэтому мы решили использовать этот тип строки подключения, так как мы не хотим полагаться на изменение tnsnames.ora на каждом клиентском компьютере. Однако, как вы видите, это указывает пользователь Oracle и связанный с ним пароль. Мы также должны предоставить возможность использовать эквивалент интегрированной безопасности SQL Server.

В соответствии с литературой, которую я прочитал, для этого мне просто нужно указать / как идентификатор пользователя, а затем опустить часть пароля (так как это все равно игнорируется для проверки подлинности Windows). Я также создал пользователь в Oracle, убедившись, что он соответствует пользователю Windows, со следующими отрывками:

CREATE USER "OPS$<DOMAIN>\<user>" IDENTIFIED EXTERNALLY; 

GRANT CONNECT,RESOURCE TO "OPS$<DOMAIN>\<user>"; 

Я также проверил, что файл sqlnet.ora на моей локальной машине, которая принимает экземпляр Х и моя DEV среда содержит строку:

SQLNET.AUTHENTICATION_SERVICES= (NTS) 

Я понял, что это позволит моему приложению подключиться к базе данных Oracle uing Windows Authentication. Однако на самом деле происходит то, что я получаю следующее сообщение об ошибке Oracle:

ORA-01005: null пароль указан; logon denied

Это не имеет большого смысла, потому что, конечно, его нуль - это должно быть, согласно учебникам, которые я прочитал.

Приложение предназначено для .Net Framework 3.5, мы используем System.Data.OracleProvider, а фактическое подключение и т. Д. Обрабатывается корпоративной библиотекой 5. Кстати, я знаю об устаревании компонента OracleClient, но я просто хотите, чтобы это работало, прежде чем я перейду к дополнительным сложностям смены поставщиков.

Может ли кто-нибудь сказать мне, что мне не хватает? Я выбрал неправильный тип строки подключения? Я прошу прощения за любые основные ошибки, но мне всегда удавалось избежать Oracle до сих пор, поэтому мои знания об этом близки к нулю.

Большое спасибо

ответ

1

У меня была такая же проблема и решена после добавления этого к подключ. строка:

Integrated Security=yes 
+0

Действительно? Я не могу вспомнить, пробовал ли я это или нет, но я отдам ему время, когда у нас будет время, чтобы проверить это. Мы решили не предлагать интегрированную безопасность, по крайней мере, на начальном этапе, особенно учитывая, что сами Oracle не рекомендуют ее. Если это решит, тогда я буду очень счастлив! –

+0

Наконец-то у меня получилось несколько минут, чтобы получить трещину, но я просто не мог заставить его работать. Я отказываюсь от этих исследований, пока не будет насущной необходимости! –

0

Чтобы подробнее остановиться на ответе выше на @Stikut. Я тестировал это с помощью NHibernate 3.3.3.GA, и он работает.

user id=/;password=;Integrated Security=yes