CrystalDecisions.CrystalReports.Engine.LogOnException:数据库登录失败

问题描述 投票:0回答:1

这发生在 PDF 生成的 ReportDocument.Export() 上。 但只是偶尔/随机。

总体来说,情况还不错,每天 1 或 2 个错误(+10k 请求),但这仍然让我烦恼。

2 种不同类型的错误:

  • CrystalDecisions.CrystalReports.Engine.LogOnException:数据库登录失败
  • CrystalDecisions.CrystalReports.Engine.LogOnException:文件中出现错误 < Reportname >.rpt
    无法连接:登录参数不正确

我发现这些错误在社区中很常见,我发现很多网站都提供了这些错误的解决方案,我已经尝试了很多,但到目前为止没有一个有效(我将在下面提到一个例外) .

事实

  • 使用的版本是 13.0.21.2533(适用于 .NET Framework 的 SAP Crystal Reports 运行时引擎(32 和 64 位))
  • 生成的报告适用于所有环境(甚至产品)
  • 一些报告随机/偶尔失败。尽管几乎可以立即生成相同的(请求)报告,但工作正常。
  • 没有报告查看器。
  • 对我来说,他们在产品中工作的事实放弃了许多建议的解决方案。不管怎样,我尝试/检查了它们。
  • 没有与数据库的连接,我传递一个数据集作为报告的数据源(内部有多个表)
  • 我使用“使用”模式/语法。我还尝试在 Final 上显式处置(而不是使用)
            finally
            {
                report.Database.Dispose();
                report.Close();
                report.Dispose();
            }      

测试/复制

为了能够复制该问题,我使用 SOAP UI 来加载测试请求(1 分钟,2 个线程,尽可能多(完全相同)的请求),并且有时会失败。

错误1.数据库登录失败

这个问题已经部分解决,我改变了这样设置数据源:

                report.SetDataSource(rawData);  

为数据源中的每个表设置它,或多或少像这样:

                foreach (DataTable dataTable in rawData.Tables)
                {
                    foreach (CrystalDecisions.CrystalReports.Engine.Table table in report.Database.Tables)
                    {
                        if (table.Name == dataTable.TableName)
                        {
                            table.SetDataSource(dataTable);
                            break;
                        }
                    }
                }

此修复几乎完全消除了此错误。 我需要更积极的负载测试,让它偶尔失败一次,而以前,每次我对其进行负载测试时,它都会失败一次或两次。

错误 2. 文件 < Reportname >.rpt 中出现错误。无法连接:登录参数不正确

通过上述修复,此错误的实例也很少(1 或 2 个例外),也需要进行更积极的负载测试才能发生,但发生的次数比上述错误多。在每次负载测试失败 3 到 7 次之前。

错误

An exception is thrown: 
     >>>>> Exception details=CrystalDecisions.CrystalReports.Engine.LogOnException: Database logon failed. 
                        ---> System.Runtime.InteropServices.COMException: Database logon failed.
                        
       at CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions, RequestContext pRequestContext)
       at CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)
       
       --- End of inner exception stack trace ---
       at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)
       at CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)
       at CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext)
       at CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext reqContext)
       at CrystalDecisions.CrystalReports.Engine.FormatEngine.Export()
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.Export()
       at < mynamespace >.RptUtil.GeneratePDF(DataSet rawData, ...

另一个

    An exception is thrown: 
     >>>>> Exception details=CrystalDecisions.CrystalReports.Engine.LogOnException: Error in File < 
report name >_{1E5E29F7-E5A2-43EA-90E5-D62ECAA19A01}.rpt:
    Unable to connect: incorrect log on parameters. ---> System.Runtime.InteropServices.COMException: Error in File < 
report name >_{1E5E29F7-E5A2-43EA-90E5-D62ECAA19A01}.rpt:
    Unable to connect: incorrect log on parameters.

       at CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions, RequestContext pRequestContext)
       at CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)

       --- End of inner exception stack trace ---
       at CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)
       at CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)
       at CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext)
       at CrystalDecisions.CrystalReports.Engine.FormatEngine.Export(ExportRequestContext reqContext)
       at CrystalDecisions.CrystalReports.Engine.FormatEngine.Export()
       at CrystalDecisions.CrystalReports.Engine.ReportDocument.Export()
       at < mynamespace >.RptUtil.GeneratePDF(DataSet rawData, ...
       
c# crystal-reports
1个回答
0
投票

这个问题你解决了吗?我现在的钱也一样

© www.soinside.com 2019 - 2024. All rights reserved.