SQL16 Reporting Service Execution Log for Mobile Report

Update:

SQL 2016 SP1 makes the change!

One area of feedback we rec’d was around the inability to see any logs in the report catalog related to specific mobile reports.  With this release, you now can see basic information in the execution logs for mobile reports, including the folder path, report name, user who ran the report and when they ran it. https://blogs.msdn.microsoft.com/sqlrsteamblog/2016/11/16/whats-new-in-sql-server-2016-sp1-for-reporting-services/

I feel proud that my feedback makes SQL better.
Shiyang
Nov 17, 2016
********************************************************************************************

SQL Server Reporting Services provide a built-in log function to store rich information of execution history of the report. That information could be used to create performance baseline; trouble shoot performance etc. You could check more information from: Report Server ExecutionLog and the ExecutionLog3 View.

What's new for SQL 2016 Mobile Report Execution Logging

From SQL 2016, Microsoft introduce a new type of mobile report which bases on Datazen. In SQL 2016 RTM, the execution logging granularity of mobile report is embedded server side dataset. It's different from paginated report execution logging, which logging granularity is report.

Every time we generate a mobile report with data refresh, for every dataset inside the mobile report, SSRS will process the dataset from data source, then render it as JSON to client app. There will be 2 log records, the 1st record has no value of ItemPath, which Format is SHAREDDATASETJSON. The 2nd record has no value of Format, which ItemPath is the path of dataset, TimeRendering is always 0. They share the same ExecutionId.

MobileReportExecutionLog1

Current recommendation

My recommendation is to apply the naming rule of dataset: put mobile report name as prefix. Then you could find out the execution basing on the name of dataset and ExecutionId.

Below is one example:

[sql]
use ReportServer
go

select [InstanceName]
,max([ItemPath]) as [ItemPath]
,[UserName]
,[ExecutionId]
,min([TimeStart]) as [FirstTimeStart]
,max([TimeEnd]) as [LastTimeEnd]
,max([TimeDataRetrieval]) as [TotalTimeDataRetrieval]
,sum([TimeProcessing]) as [TotalTimeProcessing]
,sum([TimeRendering]) as [TotalTimeRendering]
,sum([ByteCount]) as [TotalByteCount]
,max([RowCount])
from dbo.ExecutionLog3
group by [InstanceName],[ExecutionId],[UserName]
having max([Format]) = 'SHAREDDATASETJSON'
order by [FirstTimeStart] asc
go

[/sql]

Posted by Shiyang Qiu, Aug 31, 2016
Special thanks to Chris Finlan