几个月前,在报告服务器上的服务包之后,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 设置回它的旧值,看看是否可以修复程序 - 尽管它会破坏常规的 oracle 报告。如果有人知道发生了什么,请赐教。
根据我的阅读,如果客户端上未指定字符集,则客户端应该使用数据库默认值。
关键是第一条错误消息:
ORA-12705: 无法访问 NLS 数据文件或指定的环境无效。
这导致了这一点:
http://www.dba-oracle.com/t_ora_12705_error.htm
然后仔细检查文件夹权限。我需要在 ORACLE_HOME 目录和子目录上向经过身份验证的用户授予权限。
现在工作!