Reporting Service Execution Logging

- The Execution Log contains information of Report that executes across multiple servers in a scale-out (also in non scale out scenarios)

- A cap can be placed on the number of days of logging information kept

– This process is called ‘pruning’ and occurs each day at 2 am

Aimed at:

– Report Server administrators looking to identify reports that need to be cached in some manner

– Report Publishers looking to improve performance of reports: queries, layouts, and expressions

Information is stored a table called ExecutionLog in the ReportServer database. Important columns include:

- Name of the Report

- Rendering Format

- Parameter Values

- Time spent on data retrieval,processing and Rendering

- Source of data ( live or cached or snapshot)

- Do not query the table directly without nolock hint as it could cause concurrency problems.

- To review execution logging data, the information must be extracted and queried – DTS package and sample reports are shipped to help facilitate this process. (Check the Reporting Services Books online for step by step process)

ExecutionLog Table

reportID and userID

Identifier to the report and user.

Format

Requested rendering format

parameters

null is report parameters were not used

timedataretrieval

Time (ms) spent retrieving data.

timeprocessing Time (ms) spent processing.
timerendering Time(ms) spent rendering.
source

1=Live,2=Cache,3=Snapshot,4=History

status Completed status, rsSuccess or error code.

SQL Statement which will give the Name of the REPORT and its Execution details (For 2005):

Select CAST(C.Name AS VARCHAR(20)) [Name],
E.ReportID,
E.InstanceName,
E.UserName,
E.RequestType,
E.Format,
E.Parameters,
E.TimeStart,
E.TimeEnd,
E.TimeDataRetrieval,
E.TimeProcessing,
E.TimeRendering,
E.Source,
E.Status,
E.ByteCount,
E.[RowCount]
from executionlog E WITH (NOLOCK) inner join catalog C WITH (NOLOCK)   
on E.ReportID = C.ItemID

Try out the difference between the above and this one:

select * from executionlog WITH (NOLOCK)

SQL Statement which will give the Name of the REPORT and its Execution details (For 2008):

Select CAST(C.Name AS VARCHAR(20)) [Name],
E.ReportID,
E.InstanceName,
E.UserName,
E.RequestType,
E.Format,
E.Parameters,
E.TimeStart,
E.TimeEnd,
E.TimeDataRetrieval,
E.TimeProcessing,
E.TimeRendering,
E.Source,
E.Status,
E.ByteCount,
E.[RowCount], E.[AdditionalInfo] from executionlogstorage E WITH (NOLOCK) inner join catalog C WITH (NOLOCK) on E.ReportID = C.ItemID

More Information:

https://msdn.microsoft.com/en-us/library/aa972246.aspx