gpt4 book ai didi

sql-server - SQL Server Reporting Services 中的 Oracle 日期格式异常

转载 作者:行者123 更新时间:2023-12-02 10:03:22 25 4
gpt4 key购买 nike

早些时候,我的客户使用 SSRS 2008R2 和 Oracle 作为事务数据库。最近他们已经升级到 SSRS 2017,现在许多报告都抛出以下错误:

ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: [AbnormalTermination:ReportProcessing], Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: An error has occurred during report processing. ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset 'Ds_Main'. ---> Oracle.ManagedDataAccess.Client.OracleException: ORA-01830: date format picture ends before converting entire input string

仔细研究报告查询后,我注意到此错误适用于所有使用 oracle 函数 TO_DATE(<Date Value>) 的报告。已使用无日期格式。例如:

To_date(:Date_Parameter) -> this syntax throws above mentioned error
To_Date(:Date_Parameter,’MM/DD/YYYY’) -> this syntax works perfectly

我愿意知道:

  1. SSRS 2017 与 SSRS 2008 R2 中的哪些变化导致了此问题,因为相同的报告在 SSRS 2008 R2 中按预期工作,并且在 SSRS 2017 中抛出上述错误。
  2. 是否有任何建议可以在不更新大量报告的情况下解决此问题?

最佳答案

what has changed in SSRS2017 vs SSRS2008R2

SSRS 2008 使用 System.Data.OracleClient。在 SSRS 2016 及更高版本中,您必须安装由 Oracle 构建和支持的 Oracle ODP.NET 提供程序。因此,可能只是两个驱动程序设置 NLS_DATE_FORMAT session 参数的方式不同。

如果您使用以下查询将数据集添加到报告中,您可以看到您的设置:

select parameter, value 
from nls_session_parameters
where parameter like 'NLS%'
order by parameter

不幸的是,似乎没有办法在 Oracle.ManagedDataAccess 中全局更改客户端日期格式,因此您必须在报表数据集查询中进行所有更改。

或者,您可以尝试确保传递的是日期参数而不是字符串参数。如果将日期传递给 Oracle 的 to_date() 函数,则无需指定格式。

SSRS 2014 的文档“这种内置数据源类型基于 .NET Framework Managed Provider for Oracle,需要 Oracle 客户端软件组件。”

对于 SSRS 2016 “这种内置数据源类型直接使用 Oracle Data Provider,并且需要 Oracle 客户端软件组件。”

关于sql-server - SQL Server Reporting Services 中的 Oracle 日期格式异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55143822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com