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

时间:2020-07-02 20:08:03

标签: c# crystal-reports

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

总的来说,这还不错,每天1或2个错误(+ 10k请求),但这仍然困扰着我。

2种不同的错误:

  • CrystalDecisions.CrystalReports.Engine.LogOnException:数据库登录失败
  • CrystalDecisions.CrystalReports.Engine.LogOnException:文件错误 <报告名称> .rpt
    无法连接:错误的登录参数

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

事实

  • 使用的版本是13.0.21.2533(用于.NET Framework(32位和64位)的SAP Crystal Reports运行时引擎)
  • 这些报告在所有环境(甚至产品)中都能产生作用
  • 某些报告随机/偶尔失败。尽管几乎可以立即生成相同的(请求)报告,但工作正常。
  • 没有报告查看器。
  • 对我来说,它们在产品中起作用的事实放弃了许多建议的解决方案。不管我尝试过/检查过它们。
  • 没有连接到数据库,我正在将数据集作为报表的数据源(内部有多个表)
  • 我使用“使用”模式/语法。我也尝试过明确地配置在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。文件 .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, ...
       

0 个答案:

没有答案
相关问题