Get Report Execution Detail

Applicability:

SQL Server 2000: Not Tested

SQL Server 2005: Tested

SQL Server 2008: Tested

SQL Server 2008R2: Tested

SQL Server 2012: Not Tested

Credits:

Author: Sorna Kumar Muthuraj

Date: 9 Jul 201

Description

Retrieves a list of executions for one or many reports. Includes parameters and execution performance data.

NOTE: It is assumed that the Report Server Database has its default name of 'ReportServer'

Code

Stored Procedure:

DROP PROC usp_GetReportExecutionDetail

GO

CREATE PROC usp_GetReportExecutionDetail @ReportName NVARCHAR(850) = NULL

AS

/****************************************************

Purpose: To retrieve a list of executions for one or

many reports. Includes parameters and execution performance data.

Uses the Catalog, and ExecutionLogStorage tables

in the report server database (assumed to be called by its default

name of 'ReportServer')

NOTE: There is a vew ExecutionLog which has different versions across the more recent

SQL Versions (ie ExecutionLog, ExecutionLog2 and ExecutionLog3) that add more friendly

values to some of the data field content.

Rather than code different SPs for these, this SP uses the unterlying table directly

Author: Sorna Kumar Muthuraj

History: 9 Jul 2011 - Initial Issue

27 Jul 2012 - ChillyDBA - converted to SP and extended to include a wider range of returned data

with conversions of some lookup IDs to their text label equivalents

*****************************************************/

SELECT

c.ItemID AS ReportID,

c.Name AS ReportName,

c.Path AS ReportPath,

CASE e.RequestType

WHEN 1 THEN 'Subscription'

WHEN 0 THEN 'Report Launch'

ELSE ''

END AS ExecutionType,

e.InstanceName AS SQLInstanceName,

e.UserName AS UserName,

e.Format AS ReportFormat,

CASE(ReportAction)

WHEN 1 THEN 'Render'

WHEN 2 THEN 'BookmarkNavigation'

WHEN 3 THEN 'DocumentMapNavigation'

WHEN 4 THEN 'DrillThrough'

WHEN 5 THEN 'FindString'

WHEN 6 THEN 'GetDocumentMap'

WHEN 7 THEN 'Toggle'

WHEN 8 THEN 'Sort'

WHEN 9 THEN 'Execute'

ELSE 'Unknown'

END AS ReportAction,

e.Parameters AS ReportParameters,

CONVERT(VARCHAR(20), e.TimeStart, 113) AS ExecutionTimeStart,

CONVERT(VARCHAR(20), e.TimeEnd, 113) AS ExecutionTimeEnd,

e.TimeDataRetrieval AS ExecutionDataRetrievalTime,

e.TimeProcessing AS ExecutionProcessingTime,

e.TimeRendering AS ExecutionRenderingTime,

CASE e.Source

WHEN 1 THEN 'Live'

WHEN 2 THEN 'Cache'

WHEN 3 THEN 'Snapshot'

WHEN 4 THEN 'History'

WHEN 5 THEN 'AdHoc'

WHEN 6 THEN 'Session'

WHEN 7 THEN 'Rdce'

ELSE 'Unknown'

END AS ExecutionSource,

e.Status AS ExecutionStatus,

e.ByteCount AS ReportByteCount,

e.[RowCount] AS ReportRowCount,

e.AdditionalInfo AS AdditionalInfo -- context-dependant XML content

FROM ReportServer.dbo.ExecutionLogStorage e (NOLOCK)

INNER JOIN ReportServer.dbo.Catalog c (NOLOCK)

ON e.reportid = c.itemid

WHERE c.Name LIKE '%' + ISNULL(@ReportName, '') + '%'

ORDER BY

c.Name,

e.TimeStart