Skip to main content

SQL to list retrieval, processing and rendering duration times of SSRS reports executions

 --Transact-SQL to list retrieval, processing and rendering duration times of SSRS reports executions.
/*
The most often complain of users is "My report is running that slowly, why?" and when you run it as admin, it works normal.
With this Transact-SQL script you can check the execution durations of report splitted in data retrieval, processing and rendering durations to analyse which part takes to most time and if it's really slow.
Please remark: Querying the ReportServer database directly is not a supported way.
Works with SQL Server 2005 / Reporting Services 2005 and higher version in all editions.
Requires select permissions on the ReportServer database.
*/

-- List processing duration times of SSRS reports executions.
DECLARE @begin datetime, @end datetime, @minDuration int;

-- Include executions of the last month.
SET @begin = DATEADD(m, -1, GETDATE());
SET @end   = GETDATE();
SET @minDuration = 3000;  -- min Duration in Millisecondes = 3 sec.

;WITH ExeLog AS

   -- Basic CTE query for ExecutionLogStore
   (SELECT CTL.[Path] AS ReportPath
      ,ELS.Format
  ,ELS.TimeStart
  ,ELS.TimeEnd
  ,DATEDIFF(ms, ELS.TimeStart, ELS.TimeEnd) AS TimeDuration
  ,ELS.TimeDataRetrieval
  ,ELS.TimeProcessing
  ,ELS.TimeRendering
  ,ELS.TimeDataRetrieval + ELS.TimeProcessing + ELS.TimeRendering AS TimeTotal
  ,ELS.ByteCount
  ,ELS.[RowCount] AS RwCount
FROM dbo.ExecutionLogStorage AS ELS
INNER JOIN
dbo.[Catalog] AS CTL
ON ELS.ReportID = CTL.ItemID
    WHERE ELS.TimeStart BETWEEN @begin AND @end
          AND DATEDIFF(ms, ELS.TimeStart, ELS.TimeEnd) >= @minDuration
          AND ELS.[Status] = 'rsSuccess')

SELECT ExeLog.ReportPath
      ,ExeLog.Format
      ,ExeLog.ByteCount
      ,ExeLog.RwCount
      ,ExeLog.TimeStart
      ,ExeLog.TimeDuration AS Duration
      ,ExeLog.TimeTotal AS Total
      ,ExeLog.TimeDataRetrieval AS DataRetrieval
      ,ExeLog.TimeProcessing AS Processing
      ,ExeLog.TimeRendering AS Rendering
       -- Percentage related to TimeTotal
      ,CASE WHEN ExeLog.TimeTotal = 0 THEN 0.0
            ELSE CONVERT(numeric(4, 2), (100.0 * ExeLog.TimeDataRetrieval / ExeLog.TimeTotal)) END AS [Data%]
      ,CASE WHEN ExeLog.TimeTotal = 0 THEN 0.0
            ELSE CONVERT(numeric(4, 2), (100.0 * ExeLog.TimeProcessing / ExeLog.TimeTotal)) END AS [Proc%]
      ,CASE WHEN ExeLog.TimeTotal = 0 THEN 0.0
            ELSE CONVERT(numeric(4, 2), (100.0 * ExeLog.TimeRendering / ExeLog.TimeTotal)) END AS [Rend%]
FROM ExeLog
ORDER BY ExeLog.TimeDuration DESC;

Comments

  1. I really like your blog because it has valuable information for learners and experts also. so please keep share on MSBI Online Training

    ReplyDelete
  2. Thanks for your valuable feedback.

    ReplyDelete
  3. Great article,Thank you for sharing this valuable info with us.
    Keep updating...

    MSBI Online Course

    ReplyDelete
  4. Thanks for your information

    ReplyDelete

Post a Comment

Hi User,
Thanks for visiting My Blog and please provide your valuable feedback and subscribe for more updates. Please don't post any spam content or comments.
Thank You

Popular posts from this blog

SSRS INTERVIEW QUESTIONS

Q: What is SSRS? Ø   SSRS or SQL Server Reporting Service is a server-based report generation software systems from Microsoft and is part of Microsoft BI. Ø   It is used for preparing and delivering interactive and variety of reports. Ø   It is administered through an web based interface. Ø   Reporting services utilizes a web service interface for supporting and developing of customized reporting applications. Ø   SSRS lets you create very rich reports (Tabular/Graphical/Interactive) from various datasources with rich data visualization (Charts, Maps, sparklines) Ø   SSRS allows are reports to be exported in various formats (Excel, PDF, word etc) Q: Explain SSRS Architecture? Reporting services architecture comprises of integrated components. It is a multi-tiered, included with application, server and data layers. This architecture is scalable and modular. A single installation can be used across multiple computers. It includes the fo...

Exception deserializing the package "The process cannot access the file because it is being used by another process."

TITLE: Microsoft Visual Studio ------------------------------ Failed to start project ------------------------------ ADDITIONAL INFORMATION: Exception deserializing the package "The process cannot access the file 'E:\SSASCube\HistoricalDataLoad\HistoricalDataLoad\bin\Development\HistoricalDataLoad.ispac' because it is being used by another process.". (Microsoft.DataTransformationServices.VsIntegration) ------------------------------ The process cannot access the file 'E:\SSASCube\HistoricalDataLoad\HistoricalDataLoad\bin\Development\HistoricalDataLoad.ispac' because it is being used by another process. (mscorlib) ------------------------------ BUTTONS: OK ------------------------------ While running SSIS package i got the error “The process cannot access the file ‘*.ispac’ because it is being used by another process”. I tried to close SSDT and run it again but, I still got the same error while compiling. Then, after searching over internet, I got...

Failed to execute the package or element. Build errors were encountered

Error: TITLE: Microsoft Visual Studio ------------------------------ Failed to execute the package or element.   Build errors were encountered. For more information, see the Output window. ------------------------------ BUTTONS: OK ------------------------------   Solution: We tried to close SSDT and run it again but, we still got the same error while running SSIS package. Then, we need to follow bellow solution: Step 1: Go to Task Manager–> Details Tab. Step 2: Locate the process “ DtsDebugHost.exe “. Kill this process. There might be multiple instances of this process. Kill all of them. Step 3: Rerun SSIS package