on 03-31-2014 1:18 PM
Hi,
We migrated our existing application from .NET 3.5 to .NET 4.5 and upgraded crystal runtime environment from visual studio 2008 for visual studio 2012 by following these links
http://downloads.businessobjects.com/akdlm/crnetruntime/clickonce/CRRuntime_32bit_13_0_3.msi.
http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_5.exe
After this upgrade in the Application we are getting this error
Load report failed.
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
at SolutionSuite.WebApp.CrystalViewer.LoadReport(Boolean bRefresh)
at SolutionSuite.WebApp.CrystalViewer.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
The maximum report processing jobs limit configured by your system administrator has been reached.
at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
The code in asp.net application is as follows
<CR:CRYSTALREPORTVIEWER id="crvMain" HasPrintButton="False" HasExportButton="False" style="Z-INDEX: 100; LEFT: 8px; POSITION: absolute; TOP: 36px" runat="server"
ToolPanelView="None" BorderColor="Transparent" BorderStyle="None" Height="50px"
Width="350px" HasRefreshButton="True" HasCrystalLogo="False" HasToggleGroupTreeButton="False" meta:resourcekey="crvMainResource1"></CR:CRYSTALREPORTVIEWER>
Private m_oReportDocument As New ReportDocument
Private Sub LoadReport(ByVal bRefresh As Boolean)
'Get the report data
Dim dtReport As DataTable = ReportHelper.GetReportData(Me.CacheKey, bRefresh)
'If there is data to display bind it to the Crystal Viewer
If dtReport.Rows.Count > 0 Then
With m_oReportDocument
.Load(ReportHelper.GetReportPath(Me.ReportId))
.SetDataSource(dtReport)
.PrintOptions.PaperSize = Common.Settings.CrystalPaperSize
End With
crvMain.ReportSource = m_oReportDocument
Else
End If
End Sub
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
m_oReportDocument.Dispose()
End Sub
We reset the registry value PrintJobLimit from 75 to -1 and that did not resolve the problem. Do we need to buy the full crystal reports package in order to resolve this issue(If thats the case what version of Crystal Reports we need to buy) or there is some thing wrong in the code that's causing this problem because with .NET 3.5 we did not have this problem.
Have you verified that what is being returned by "ReportHelper.GetReportPath(Me.ReportId)" points to a valid report file? What is returned by this function?
-Dell
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks Stinnett. This problem
The maximum report processing jobs limit configured by your system administrator has been reached.
at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
only happens in the in the production environment and is intermittent. In development and test environment we have so far not been able to reproduce this error but its keep annoying our customers in the production by occuring 5 to 10 times a day. I dont know whether its a multiuser limitation in new crystal environment or something else because this did not happen at all in the older version of crystal.
This is a limitation in the new environment. I don't remember whether the limit is 3 or 5 concurrent sessions. There were limits in the older SDK as well, but I'm not sure how well they were enforced. You need to be sure that you're explicitly using ReportDocument.Close() and then ReportDocument.Dispose() when users close their reports to ensure that the sessions are being freed up.
If you do a search here, there's lots of information about where and when to do that.
-Dell
Thanks very much.
If I close the connection like this
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
m_oReportDocument.Close()
m_oReportDocument.Dispose()
End Sub
then how do i get rid from limitation of 3 - 5 concurrent sessions. Also do you know any utility that can be used to identify number of current concurrent sessions of crystal reports user.
The limit is 3 CPL (Concurrent Processor License). This can not be changed with the CR SDK. Only way to get more CPL is to upgrade to CR Server. However there is also a thing called a Print Job and you may want to have a look at this:
Crystal Reports Maximum Report Processing Jobs ... | SCN
Also, don't forget to use the search box in the top right corner. A search string like 'crystal net limit' will bring up a number of other resources.
- Ludek
Senior Support Engineer AGS Product Support, Global Support Center Canada
Follow us on Twitter
Thanks very much Luke.
In the code I used following approach
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
m_oReportDocument.Dispose()
End Sub
but after Stinnet recomendation i have modified the code like this
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
m_oReportDocument.Close()
m_oReportDocument.Dispose()
End Sub
but in order to test this i will deploy a new release and see if problem goes away.
But from yours expertise Do you think its due to the close method not being called that's why we are getting this error. And modifiying it will resolve the problem.
Also In the production I have changed PrintJobLimit from 75 to -1 but that has not solved the problem and we are keep getting this error after every so often during a day. When we were on .NET 3.5 with Crystal reports 10.5 with this code
Protected Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Unload
m_oReportDocument.Dispose()
End Sub
the problem never happened. Is this something new Limitation introduced in Crystal Reports for .NET 4.5 and is there any utility to track number of concurrent sessions or users I can use to resolve this issue.
I would be very grateful to you for your urgent reply
Thanks
Hi
The .close and .dispose is best practice. But it will only manage the actual report document objects. If you look at the Event Viewer, you will see messages like:
A Crystal Reports job was delayed 2 second waiting for a free license to become available.
E.g.; three object are submitted, subsequent jobs are queued up and wait for a license. This is why the issue is not so easy to reproduce on your dev and QA environments. E.g.; it depends on the load as well as the report and the hardware. Throwing beefier hardware at the issue may help, but only to a point. Eventually you may end up with so many objects queued up, you will bring the server down. And there is really no CR API that will let you monitor the load.
As far as setting the Print Jobs to -1. This only applies to the Crystal Reports Server (and possibly just the OEM edition). So, set the limit to something like 400 and see what happens. Remember that almost any action on the report results in a Print Job; paging, zooming, drilling, printing, exporting, etc., etc. In addition a subreport is also considered to be a Print Job. So a subreport in a detail section of a report that returns 1000s of records will run 1000s of Print Jobs. And again, warning re. increasing this value too much; increasing the value puts the load on the hardware so the server may again start to be affected.
One final idea on handling the loads is web farms:
How Do I Use Crystal Reports in a Web Farm or Web Garden?
As to this not happening with CR 10.5, you got me totally mystified. CRVS (v13.x), is way better than CR 10.5 ever was in handling loads. I'd say the first thing to do here would be to investigating the environmental differences; OS, Hardware, network, number of users, number of reports, same reports(?), database changes, etc., etc.
- Ludek
Hi Ludek,
I have checked on production server Event Viewer>Windows Log>Application and I can see the following error messages
The following information was included with the event:
An exception has occured:Load report failed.
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
at AppSuite.WebApp.CrystalViewer.LoadReport(Boolean bRefresh)
at AppSuite.WebApp.CrystalViewer.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
the message resource is present but the message is not found in the string/message table
Load report failed.
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
at AppSuite.WebApp.CrystalViewer.LoadReport(Boolean bRefresh)
at AppSuite.WebApp.CrystalViewer.Page_Load(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
The maximum report processing jobs limit configured by your system administrator has been reached.
at CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)
at CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
But I cannot see the message you pointed out in the reply A Crystal Reports job was delayed 2 second waiting for a free license to become available.
I would be grateful if you could assist me where to find this information on Production Server.
Thanks
User | Count |
---|---|
95 | |
11 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.