Showing posts with label long running reports in Dynamics AX 2012. Show all posts
Showing posts with label long running reports in Dynamics AX 2012. Show all posts

Monday, May 19, 2014

Long running SSRS reports in Dynamics AX 2012

Quite often we come across a problem that our developed report works fine on development and test environments. However, when deployed to LIVE, customers are having issues that report is timed out!! The reason is that our development environment do not have huge data like our LIVE system so it timed out after 10 minutes. Default timeout of AOS and SSAS interaction is 10 minutes so if your report is taking more time to fill up datasource/temptable then you will have time out error after 10 minutes.

This issue is more common in reports like trial balance and customer aging reports which takes longer to fill report temp tables.
There are two possible solutions
 - Increase the default time out setting for all
 - To perform following to mitigate time out error

By performing following steps you will be able to increase the time out for reports that takes longer than 10 minutes. Recommendation is to always execute these reports in batch as it will keep your AX client busy and you won't be able to perform any other task during that processing.

1.      Extend your RDP class from SSRSReportDataProviderPreProcess instead of SSRSReportDataProviderBase
2.      Update your table type (from table properties) from InMemory to TempDB
3.      Perform full compile of IL
4.      Restart the AOS
5.      Introduce controller class to run the report (if not already there)
6.      Point your menu item from actual report to controller class

You will have following differences after this modification
1.      Will not have "A connection attempt failed because the connected party did not properly respond after a period of time" error.
2.      Will not see the report window immediately. AX will fill up the temp table and then display report window.

3.      Still should put such jobs in batch as it will keep your AX in the process and won't allow to perform any other operation.