cancel
Showing results for 
Search instead for 
Did you mean: 

Crystal Report SDK

Former Member
0 Kudos

Hi,

     I have been browsing the knowledge base for some time now without a solution.

We have a large number of reports which were migrated from Crystal reports 9. Currently for scalability and performance reasons, we have purchased Crystal Enterprise 2013 server with CMS and BI.

     I migrated the current Asp.net application to use the Enterprise features using the  SDK classes such as

        CrystalDecisions.Enterprise.SessionMgr to login to CMS,

        Getting Report Id from InfoStore ,

        CrystalDecisions.ReportAppServer.ClientDoc.ReportAppFactory using boEnterpriseSession.GetService("RASReportFactory")

        and  to create a CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocument using boReportAppFactory.OpenDocument(reportId, 0).

      I am using a Report Viewer control ( Version 14.0.3500.0) to view the reports in an asp.net page. (.Net version 4.0)

     However, I am still getting an error after 75 reports. "The maximum report processing jobs limit configured by your system administrator has been reached."

   at CrystalDecisions.ReportAppServer.ClientDoc.ISReportAppFactory.OpenDocument(Object DocID, Int32 Options).

In many cases this issue has been mentioned and the solution is to use the enterprise edition of the server. Since I am already using it, what  am I doing wrong ?

    

     This is becoming a deal breaker since we purchased the Enterprise edition to eliminate all these issues.

      Please help me to solve this issue urgently.

Thanks,

Saj

Accepted Solutions (1)

Accepted Solutions (1)

former_member188030
Active Contributor
0 Kudos

Hi Saj,

Most of the articles you have read are about standalone CR.

As you are using CR Server, this should not be an issue for you.

Here are two solutions for you. I would suggest implementing both.

1. Add additional RAS Servers. You could add a new RAS server in CMC - Servers.]

2. Logon to Central Management Console (CMC) go to Servers and Server List.

    Right-click on RAS and click Properties.

    The default value for Maximum Concurrent Report Jobs is 75. Increase this values to a definite no such as 100.

More the load on your Enterprise, more RAS servers you would need.

- Bhushan

Senior Engineer

SAP Active Global Support

Follow us on Twitter

Got Enhancement ideas? Try the SAP Idea Place


Former Member
0 Kudos

Hi,

Thank you very much for your response.

I added another RAS server (as the first part of the solution. It seems to be running on the same port as the first one.).

The second part of the solution seems to have worked, but the reports started giving the same message at exactly 200 instead of the earlier 75. (I am doing some stress tests now.)

Since there are now two RAS servers, i would have expected the threshold to be 400.

(I did monitor the RAM & CPU of the server and they are below 50% all the time)

Is there any changes in code to switch between servers in my asp.net code to take advantage of more than one RAS Server?

Please help, since I need to get a reasonable number to report to the management urgently, to plan on further scaling based on our load.

Former Member
0 Kudos

Hi,

     I found the problem with my setup.  I had not cloned the correct RAS server, which in my case was in the form XXXXXSRVRXX.CrystalReports2013ReportApplicationServer.

    Once I got the configuration done and also restarted the server (very helpful indication on the CMS UI), my test got the expected results.

Thank you Bhushan for the excellent and quick answer

0 Kudos

Hi Saj,

Likely the issue is you are not closing/disposing of your report objects in code, so each report does not time out until 20 minutes.

When you set up the second RAS server you need to specify a different Port number. You can do that on the Command line or go into the Properties of the RAS Server and let it auto assign. Do this through the CMS.

And adjust the setting also as Bhushan suggested, you'll ahve to play with those numbers to best optimize for your reports and users.

No code change, CMS will manage which server the job goes to. Do not specify the RAS Server in your code also. CMS must manage it.

Another thing you can do is go to this registry key:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\SAP BusinessObjects\Suite XI 4.0\Report Application Server\Server - PrintJobSharingTimeout = 20

20 is the default timeout for each report document, change this number to 2, it will not go any lower than that.

Do this for each instance of the RAS Servers.

This will also allow the RAS Service to close the job's within 2 minutes.

Stop each RAS server before making the change then restart them.

Also, we don't usually recommend this but depending on the reports, if they are simple and quick to run, set the job limit to -1, unlimited. but be aware this can have performance issues so test and then adjust if required.

Don

Former Member
0 Kudos

Thanks Don.

Your inputs definitely help in further fine tuning.

I am disposing them in Session End. I am not able to find any other event where I can dispose them since the Viewer needs the objects for paging and such. Am I right? Is there any better way ?

As you specified I did let CMS auto assign port for the new RAS server and restarted the server in CMS UI ( and it is working great now).


I do not want to change the Job Limit to -1 yet, but would like to control that value. Is there any way to get the current concurrent print jobs so that I can throttle at my application end and also show some helpful message for the user to try later ?

0 Kudos

Great,

We don't have an API that can get the number of Jobs running. You can get it from the Metrics tab CMS Crystal Report Servers but no where else.

All you can do is monitor this number, that where the reg key above comes in handy, RAS will release the job after 2 minutes once your code releases it.

We've asked for an API to get the Job count but it's still in Idea Place.

Don


Answers (0)