Utilizing the SSRS execution logs

The ExecutionLogStorage table in the ReportServer database contains a wealth of information to help manage reports. This table contains who, what, when, and how long a report was used. Even reports that were used in subscriptions are listed in this table, along with failed reports.

The ExecutionLogStorage table contains only 60 days' worth of data. This is not enough to determine trends of report use. There may be end of quarter reports that are heavily used only a couple of days a quarter.

There are two approaches for increasing how many days of data are stored in this table. One is to increase the setting for how many days are maintained in the ExecutionLogStorage table. If this technique is used, then make sure to keep an eye on the growth of the table. To increase the number of days that are saved, follow these steps:

  1. Open up Microsoft SQL Server Management Studio.
  2. Connect to the instance of SQL Server Reporting Services you wish to change.
  3. Right-click on the SQL Server Reporting Services name, and select Properties.
  4. Click on Logging in the menu on the left-hand side.
  5. Change the number of days to that which should be maintained in the log.
    Utilizing the SSRS execution logs

The second approach would be to have the data in the ExecutionLogStorage table, summarized and placed in a data warehouse. This will allow you to see trends over time, without causing the ExecutionLogStorage table to grow too quickly.

Instead of querying the ExecutionLogStorage table directly, you can use a view that is provided with Reporting Services called ExecutionLog3. This is a great view to use, since numeric flags have been changed to text for you. The following query summarizes how many reports were run each month by user:

SELECT
  ItemPath
   ,CONVERT(varchar(2), MONTH(TimeStart)) + '/' + CONVERT(varchar(4), YEAR(TimeStart)) AS ExecutionMonth
   ,UserName
   ,COUNT(ExecutionId) AS CountExecutions
   ,COUNT(DISTINCT ExecutionId) AS CountDistinctExecutions
   ,AVG(TimeDataRetrieval) AVG_TimeDataRetrieval
   ,MAX(TimeDataRetrieval) AS MAX_TimeDataRetrieval
   ,AVG(TimeProcessing) AS AVG_TimeProcessing
   ,MAX(TimeProcessing) AS MAX_TimeProcessing
   ,AVG(TimeRendering) AS AVG_TimeRendering
   ,MAX(TimeRendering) AS MAX_TimeRendering
   ,Status
FROM
  ReportServer.dbo.ExecutionLog3
WHERE
  RequestType = 'Interactive'
  AND [format] = 'RPL'
  AND ItemPath <> 'Unknown'
GROUP BY
  Itempath
   ,CONVERT(varchar(2), MONTH(TimeStart))
   ,CONVERT(varchar(4), YEAR(TimeStart))
   ,UserName
   ,Status
ORDER BY
  Itempath
   ,UserName  

The TimeDataRetrieval, TimeProcessing, and TimeRendering fields are given in milliseconds. These three fields breakdown how long it takes to create a rendered report and can be very useful to pinpoint which part of the process is causing a slow running report.

COUNT(DISTINCT ExecutionId) was used, since the log contains each time the user clicked on the View Report button. By counting the distinct values, you will get how many times they opened the report as opposed to how many times they clicked on the button.

By viewing these metrics, you can determine the usage of the reports over time, which will help you determine reports that need improvement and the reports that should be archived because of disuse.

Note

For more information on the ExecutionLogStorage view, please go to http://technet.microsoft.com/en-us/library/ms159110.aspx#bkmk_executionlog3.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.118.226.66