We are doing a conversion of Crystal Reports to SSRS. One thing we noticed was that the crystal viewer launches faster than ssrs. However, in crystal it buffers in the remaining data. To be clear, if I request 5 records run. The viewer launches in Crystal with recordset 1, however records 2-5 are not accessible till all supporting reads are complete.
In SSRS, nothing displays till records 1-5 are completly accessible to the viewer.
Giving the illusion that Crystal is faster than SSRS. In fact, I've done time tests same data same report. SSRS beats Crystal everytime in overall request completion. But Crystal displays information to the user more quickly.
Any settings or anything to mimic the behavior of Crystal on SSRS?
A little more digging revealed that the feature on the Crystal Webserver is 'page on demand' processing.
SSRS will try to do this automatically, but there are many things in the report definition that could prevent it.
I think the most likely culprits are sorting at the report level and page numbers. Move the sorts into your query, and take them out of your report definition. Otherwise, SSRS needs to retrieve all data to determine what the first row will be.
There are some nice tips on MSDN for this.
Related
I have a stepped report that has 5 row groups. Each one uses an expression as the value to group on. The user selects a value for up to 5 different parameters and based on those parameters is how the report is grouped.
With certain combinations of parameters the report may take 2min + to run in the preview pane in Visual Studio. When I deploy the report to the SSRS server the same combinations of parameters runs in 10 seconds or less. Out of curiosity, I created a copy of the report and removed the expressions from each of the row groups and specified a field to group on. In that case it previews just as fast as when viewed on the server.
Anyone have any idea what may be going on here?
I'm currently using Visual Studio Enterprise Update 3.
I realize this is an older issue, but maybe this will be some help to you.
I am experiencing similar symptoms to what you have described and it comes down to using dynamic fields in grouping statements. Apparently, any other statement can use dynamic fields without issue, but groupings incur a huge performance hit.
This link outlines the symptoms and causes.
I don't know if it was in that particular link or not but I read something about how the ReportViewer control when it renders to HTML has a bug in it that only happens when the control is running under .Net 4.0 or higher. In .Net 3.5 the performance is pretty much the same as it is if you were to run the RDL in the Report Viewer application.
If you are able to do so, the quickest way to get the report viewer component to work is to have the application pool IIS is using to run under .Net 2.0 (or 3.5 if that option is there, since they're basically the same thing).
If your application uses .Net 4.0 or higher for other functionality, there isn't much I've been able to figure out, short of rewriting the report to remove dynamic references from groupings, but that significantly reduces the interactivity of the report (no expand/collapse options in table rows/columns).
For reference, I had a report, where the query took about 2 minutes to execute, and then rendered almost instantly afterwards if I loaded the RDL in SSRS. That same report rendered using the ReportViewer control in .Net 2.0 took about 2 min 30 sec to fully render. Using the exact same code, but changing the app pool to use .Net 4.0, the report has been "rendering" for roughly 15 minutes now and still hasn't come back.
First of all and a bit obvious, if you are running your report in a development machine it won't have the same computing power as a server. Even if you are running VS from the server it won't run as fast as a deployed report.
The cause -as you may notice- for the slow performance is the grouping expression. It seems your report is taking to long to process so check this article from a Technet post. I copied and pasted a paragraph below:
Many levels of nested and adjacent groups in a Tablix data region can
affect report processing performance. Consider both the level of
grouping, the number of group instances, and the use of aggregate
functions which require evaluating after group, filter, and sort
expressions are applied.
I recommend you try to perform the grouping in the datasource at SQL level, you can also pass parameters to the query to set the desired grouping there.
Let me know if this helps.
I have more than 15 sub reports in my ssrs report.Each sub report should be displayed only when we click on some text to toggle.But in the background(SQL Profiler) is running all the sub report datasets along with the main dataset which is resulting in poor performance.I have gone through different procedures suggested in diff blog but did not find the right solution.
Can someone please help me with this.
Thanks,
Dev
Unfortunately, according to this documentation, subreports are run at the same time as the main report:
https://msdn.microsoft.com/en-us/library/dd207141.aspx
The "Performance" section of the above documentation (pasted below) makes a good point, but it would require a slight re-design (but end up with better performance!):
Performance
When deciding which to use, consider using a data region instead a subreport, particularly if the subreport is not used by multiple reports. Because the report server processes each instance of a subreport as a separate report, performance can be impacted. Data regions provide much of the same functionality and flexibility as subreports, but with better performance. Drillthrough reports have better performance than subreports, too, because they don't retrieve all the data at the same time as the main report.
I am using Dynamics CRM 2013 on premise.
I have built all the reports based on stored procedures in SSRS.
one report however, that has no issue with execution definitions, permissions or what ever,
once executed causes to browser to crash (any browser, i tried FF, Chrome, IE9 and up, )
it seems the problem is not a report execution problem but a report rendering problem for this specific report.
I cannot cache the report or make a snapshot of it, as the values of the reports also depends on the user running the report (among other parameters user-defined) and each user should get a different result. - i have more than 400 users.
I have tried searching for any one who had face this kind of issue and reported on it but failed. hence decided to post this question my self.
if anyone has any idea, please share.
thanks
Have you enabled tracing/logging in SSRS? http://msdn.microsoft.com/en-us/library/ms156500.aspx
You might turn on verbose logging while trying to run the report to see if you can get more helpful information.
If you write code, you can write a .NET application that calls the SSRS web services to render the report. Doing that will help you know for certain whether it's a browser rendering issue since you can get back the report as a byte array and save it to disk as Word, PDF, etc.
I have created a report with Report Builder 3.0
I'm running it on Microsoft Reporting services 2012
When O look in the performance logs (via ExecutionLog3) I see that all 3 phases(Retrieval, Processing, Rendering) took about 2 secs. But the browser take 7+ sec to present it (and it is consistent that there is 5-10 seconds overhead), what might be the source of it?
Could be one of two things most commonly:
The problem MAY BE, not sure, that your SSRS server is recycling every 12 hours and the first report of the day may be accessing the catalog on the ReportServer, getting the site up and running and then giving you a report. Generally this is common with SSRS and sometimes may take up to a minute for the first report of the day. Generally you can create a 'keep alive' service to poke SSRS every few hours at http:// (servername)/ReportServer which is SSRS's web service. You can also I have read set a config setting on the SSRS server itself but that never worked for me so I gave up and created a keep alive service instead.
The report can be taking a long time if a developer created a lot of functions on top of the data to render it with font changes, size changes, color changes, dynamic logic. You mentioned 'Rendering' in the time you looked up but if the report is not rendering in the browser how are you seeing rendering happen faster?
Generally it is both of these things in different situations. Best way to check 2 is create a super simple report with no parameters and a simple dataset that returns a black and white grid.
I have MS Access reports that needs to be displayed in a crystal report in .net windows application. Is there any way to do it or some alternatives?
I am not sure about the right approach to complete this, can anybody help here?
Hum, I don’t think this is possible. I not aware that access reports can be converted or transferred to crystal reports anyway.
Remember, access reports have event code, and even can have code run in the report for EACH line of detail that displays. In other works, not only are access reports amazing, but they are fully programmable with VBA code embedded INSIDE of the report.
Because of this issue, you need ms-access running and loaded for those reports to work correctly (the VBA is required, and functions, and also that of sql queries..of which a report can be based on SEVERAL data sources and several tables all at the SAME TIME).
Even more worry is that there is not any kind of code or report converter here from ms-access to crystal reports. So, you never could in any way easy way transfer reports from ms-access to crystal reports.
You could attempt to embed ms-access as a com object, but all kinds of problems like page numbering etc. can’t really be controlled here if the report is to appear inside of the crystal report.
I STRONLY recommend that if you need some reports in crystal reports, then have the appropriate reports built in crystal and you avoid this whole mess. And, you avoid having ms-access in the mix. Or, dump crystal, and only use ms-access here.
Attempting to embed word, excel, pdf, or other com objects such as ms-access inside of some crystal report is formula for VERY unreliable applications. This is likely not possible, but even if it was, I would not let loose an application of this type. Heck, embedding pdf’s in a access report can’t even reliable work (they break after some stupid pdf update gets issued automatic). This type of mixed up systems near guarantee break when one or the other system has some automatic update occurring!
You start mixing up several applications and it will cost you buckets support trying to keep that mess running.
If you MUST take different reports from several different systems, then send out all the reports to pdf, and then use some pdf tools to combine them into one final pdf document.
Don’t try t mix reporting systems at the application level. It not reliable even if this was possible..