У нас есть требование, чтобы наши продукты работали как на Oracle, так и на SQL Server (вокруг которого они изначально были построены). К сожалению, у нас нет собственного опыта разработки Oracle, но я, будучи старшим разработчиком, возглавил проект. До сих пор мне удалось подключить наше приложение к базе данных Oracle (я использую Oracle XE 11.2) с помощью следующей строки подключения:
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 на моем локальном компьютере, на котором находится экземпляр XE, и среда разработки содержат строку:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
Я понял, что это позволит моему приложению подключаться к базе данных Oracle с помощью аутентификации Windows. Однако на самом деле происходит следующее сообщение об ошибке Oracle:
ORA-01005: указан нулевой пароль; вход запрещен
это не имеет особого смысла, потому что, конечно, оно нулевое - оно должно быть, согласно прочитанным мною учебникам.
Приложение предназначено для .Net Framework 3.5, мы используем System.Data.OracleProvider, а фактическое подключение и т. Д. Обрабатывается Enterprise Library 5. Кстати, я знаю об устаревании компонента OracleClient, но я просто хочу это сработает, прежде чем я начну разбираться со сложностями смены провайдеров.
Может кто-нибудь сказать мне, что мне не хватает? Я выбрал неправильный тип строки подключения? Я прошу прощения за любые основные ошибки, но мне всегда удавалось избегать Oracle до сих пор, поэтому мои знания об этом близки к нулю.
Большое спасибо