Несколько месяцев назад запросы Oracle перестали работать на нашем сервере служб отчетов после установки пакета обновления на сервере отчетов.
В итоге мне пришлось предоставить разрешения для каталогов Oracle, чтобы устранить первую ошибку, а затем переименовал запись реестра NLS_LANG, чтобы избавиться от второй ошибки. Старое значение было: AMERICAN_AMERICA.WE8MSWIN1252.
Сейчас мы переносим в производство несколько новых отчетов, в которых используются хранимые процедуры Oracle, и они получают эту ошибку.
--- End of inner exception stack trace ---
w3wp!processing!8!7/27/2009-09:26:09:: e ERROR: An exception has occurred in data source 'CSUD3_RPTAPL'. Details: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for data set 'MYDATASET'. ---> System.Data.OracleClient.OracleException: ORA-06550: line 1, column 57:
PLS-00553: character set name is not recognized
ORA-06550: line 0, column 0:
PL/SQL: Compilation unit analysis terminated
Я создал тестовую процедуру, которая просто возвращает
select 'test' "field1" from dual;
Возникает та же ошибка. Сегодня вечером я попытаюсь вернуть NLS_LANG его старое значение и посмотреть, исправит ли это процедуры - хотя это нарушит обычные отчеты оракула. Если кто-то понимает, что происходит, пожалуйста, просветите меня.
Из того, что я прочитал, клиент должен использовать базу данных по умолчанию, если кодировка не указана на клиенте.
Ключ был первым сообщением об ошибке:
ORA-12705: Невозможно получить доступ к файлам данных NLS или указана недопустимая среда.
Что привело к этому:
http://www.dba-oracle.com/t_ora_12705_error.htm
А затем более пристальный анализ разрешений для папок. Мне нужно было предоставить разрешения аутентифицированным пользователям в каталоге ORACLE_HOME и подкаталогах.
Работает в настоящее время!