Forum Discussion
ChandanJha25
4 years agoNew Member
Refresh Failure Alert for Multiple Dashboards
Hello Team, I took charge of a BI engineering function having around 400 dashboards. I noted that for the scheduled refresh failures, the emails were going to the individual folks causing lot of ...
- 4 years ago
Hi ChandanJha25 ,
If you use this query (connected to your PBI report server) in an SSRS report and schedule the SSRS to email out the failures:
WITH cte_LastRefresh AS ( SELECT MAX(SubscriptionHistoryID) AS SubscriptionHistoryID ,SubscriptionID FROM dbo.SubscriptionHistory WHERE [Status] = 2 GROUP BY SubscriptionID ) SELECT c.Name as [Report Name] --rs.scheduleid ,c.path as [Report Path] ,sub.[Description] as [Schedule Name] --,sub.[LastStatus] as [Last Status] ,SUBSTRING(sh.Details,CHARINDEX('Message":"',sh.Details)+10,200)+ '...' AS [Error Detail] --CASE WHEN sub.[InactiveFlags] = 0 THEN 'Enabled' -- WHEN sub.[InactiveFlags] = 128 THEN 'Disabled' -- ELSE 'Other' --END as [Enabled] --,sub.[EventType] as "Event Type" ,CONVERT(Varchar(17),sub.[LastRunTime],113) as [Last Run Time] ,SUBSTRING(u_own.UserName,CHARINDEX('\',u_own.UserName)+1,10) as [Created by] ,SUBSTRING(u_mod.[UserName],CHARINDEX('\',u_mod.[UserName])+1,10) as [Modified by] ,CASE WHEN jsch.next_run_date = 0 THEN '-' ELSE Convert(Varchar(17),msdb.dbo.agent_datetime(jsch.next_run_date, jsch.next_run_time),113) END as [Next Run Time] --,CASE c.[Type] WHEN 2 THEN 'SSRS' -- WHEN 5 THEN 'Data Source' -- WHEN 7 THEN 'Report Part' -- WHEN 8 THEN 'Shared Dataset' -- When 13 Then 'Power BI' -- ELSE 'Other' -- END AS "ReportType" ,sub.LastStatus FROM [dbo].[Subscriptions] sub INNER JOIN dbo.[Catalog] c ON sub.report_oid = c.itemid INNER JOIN [dbo].Users u_own ON c.CreatedByID = u_own.UserID INNER JOIN [dbo].Users u_mod ON c.ModifiedByID = u_mod.UserID INNER JOIN dbo.ReportSchedule rs ON sub.SubscriptionID = rs.SubscriptionID INNER JOIN cte_LastRefresh lr ON rs.SubscriptionID = lr.SubscriptionID INNER JOIN dbo.SubscriptionHistory sh ON lr.SubscriptionHistoryID = sh.SubscriptionHistoryID LEFT OUTER JOIN msdb.dbo.sysjobs j ON CAST(rs.ScheduleID AS VARCHAR(100)) = j.name LEFT OUTER JOIN msdb.dbo.sysjobschedules jsch ON j.job_id = jsch.job_id WHERE 1=1 AND sub.LastStatus like '%failed%' AND jsch.next_run_date <> 0 AND Convert(smalldatetime,msdb.dbo.agent_datetime(jsch.next_run_date, jsch.next_run_time)) > getdate() order by 2To learn more details ,refer:
Best Regards
Lucien
v-luwang-msft
4 years agoCommunity Support
Hi ChandanJha25 ,
Has your problem been solved, if so, please consider Accept a correct reply as the solution or share your own solution to help others find it.
Best Regards
Lucien