Crystal Report 2013内存不足问题

2020-08-30 06:24发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)问候! 目前,我正在处理一位客...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


问候!

目前,我正在处理一位客户的问题。 该问题是Crystal Report 2013内存不足的问题。 以下是问题的详细信息:

我们的客户针对中等大小的MS SQL Server数据库运行了3个月(最后一个季度)的报告。 他们遇到以下错误:

[错误] ReportViewer.RefreshReport:RunReport期间发生异常。 Cancelled = False

最高例外

Type = System.Runtime.InteropServices.COMException

Source = rptcontrollers.dll

Message = 没有足够的内存用于操作

StackTrace:

at CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.GetLastPageNumber(RequestContext pRequestContext)

at CrystalDecisions.ReportSource.EromReportSourceBase.GetLastPageNumber(ReportPageRequestContext reqContext)

,位于CrystalDecisions.CrystalReports.Engine.FormatEngine.GetLastPageNumber(ReportPageRequestContext reqContext)

d中的ININ.Reporting.Historical.Engine.Module.ViewModels.CrystalReportsViewerControl.RunReport()上的

cs:125行

在System.Threading.Tasks.Task`1.InnerInvoke()

在System.Threading.Tasks.Task.Execute()

StackTrace:

在<> c__DisplayClass16。 em>

at AggregateException.Handle(Func`2谓词)

在ReportViewer。 b__10(任务1 p)d:\ builds \ eic_main_systest \ products \ eic \ src\ reporting \ HistoricalReporting \ ReportEngine \ ReportEngineModule \ ViewModels \ ReportViewer.cs(562)

ContinuationTaskFromResultTask`1.InnerInvoke()上的

在Task.Execute()上

在Task.ExecutionContextCallback(Object obj)

在ExecutionContext.RunInternal(ExecutionContext执行上下文,ContextCallback回调,对象状态,布尔值saveSyncCtx)

在ExecutionContext.Run(ExecutionContext执行上下文,ContextCallback回调,对象状态,布尔值saveSyncCtx)

在Task.ExecuteWithThreadLocal(Task&currentTaskSlot)

在Task.ExecuteEntry(布尔值bPreventDoubleExecution)

在SynchronizationContextTaskScheduler.PostCallback(Object obj)

在ExceptionWrapper.InternalRealCall(委托回调,对象args,Int32 numArgs)

在ExceptionWrapper.TryCatchWhen(对象源,委托回调,对象args,Int32 numArgs,委托catchHandler)

在DispatcherOperation.InvokeImpl()

在DispatcherOperation.InvokeInSecurityContext(对象状态)

在ExecutionContext.RunInternal(ExecutionContext执行上下文,ContextCallback回调,对象状态,布尔值saveSyncCtx)

在ExecutionContext.Run(ExecutionContext执行上下文,ContextCallback回调,对象状态,布尔值saveSyncCtx)

在ExecutionContext.Run(ExecutionContext执行上下文,ContextCallback回调,对象状态)

在CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext执行上下文,ContextCallback回调,对象状态)

在DispatcherOperation.Invoke()

在Dispatcher.ProcessQueue()

在Dispatcher.WndProcHook(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam,布尔值和已处理)

HwndWrapper.WndProc中的

(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam,布尔值和已处理)

HwndSubclass.DispatcherCallbackOperation(Object o)上的

在ExceptionWrapper.InternalRealCall(委托回调,对象args,Int32 numArgs)

在ExceptionWrapper.TryCatchWhen(对象源,委托回调,对象args,Int32 numArgs,委托catchHandler)

位于Dispatcher.LegacyInvokeImpl(DispatcherPriority优先级,TimeSpan超时,Delegate方法,对象args,Int32 numArgs)

HwndSubclass.SubclassWndProc上的

(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam)

在UnsafeNativeMethods.DispatchMessage(MSG&msg)

在Dispatcher.PushFrameImpl(DispatcherFrame frame)

在Dispatcher.PushFrame(DispatcherFrame frame)

在Application.RunDispatcher(对象忽略)

在Application.RunInternal(窗口窗口)

在Application.Run(窗口窗口)

at WpfShellImplementation.ShowAndRun()d:\ builds \ eic_main_systest \ products \ eic \ src\ Cafe \ Library.Wpf \ WpfShellImplementation.cs(72)

CafeApplication.Run()上的

d:\ builds \ eic_main_systest \ products \ eic \ src\ Cafe \ Library \ CafeApplication.cs(203)

在ShellApplication.RunApp()

在ShellApplication.Main()

我们也可以使用其数据库在本地测试环境中重现该问题。 我们已经用16 GB的内存测试了该报告,但是运行Crystal Report的应用程序在可用内存下就很好了。

我们还测试了数据库查询,结果如下:

进一步调查该问题,我们尝试搜索有关该错误的一些内容,发现此链接表明,作为32位应用程序,Crystal Report在任何给定时间点只能访问大约2GB的RAM。 我们的Crystal Report版本是13.0.9.1312:

无法运行的报告具有不同组的聚合/求和公式。 如果运行时间较短(<30天),则此报告运行良好。

CR2013在处理具有不同组的聚合/求和公式的大数据集时是否有任何限制? 感谢您为解决此问题提供的帮助。
谢谢!
Sanjoy。

pmcapture.jpg (141.9 kB)