【发布时间】:2009-07-27 17:24:46
【问题描述】:
几个月前,在报告服务器上的服务包之后,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 报告。如果有人知道发生了什么,请赐教。
根据我的阅读,如果客户端上未指定字符集,则客户端应该使用数据库默认值。
【问题讨论】:
-
您提到了一个“旧”的 NLS_LANG 值。这似乎意味着有一个不同的“新” NLS_LANG 值——新值是什么?
-
新值什么都不是——我重命名了注册表项。这意味着客户端应该使用服务器设置。这是为了修复一个错误。
-
Service Pack 之后出现的错误是什么?您提到Oracle“停止工作”,是否意味着数据库无法启动?你是在服务端还是在客户端去掉 NLS_LANG 参数?
-
我修正了不清楚的第一句话。在报告服务上使用 oracle 的报告停止工作。我们删除了客户端上的 NLS_LANG 以使其正常工作。
标签: sql-server sql-server-2005 oracle reporting-services