前言:

大家好,我是小小大世界,初来乍到,作为一名BI工作者,一直想着通过某种方式记录自己成长的点点滴滴,今天静下心来,开始写一些自己工作中的经验。

正文:

前几天看了几篇文章,提到了如何使用报表服务器数据库创建触发器,在报表刷新失败时自动发邮件通知,心里想着这个功能挺实用的,不需要整点去看报表是否成功刷新,或者后台查报表的刷新日志。

不过进一步思考了一下,大家都知道,报表服务器报表多了之后,若都是导入模式制作的报表,难免要定时刷新,但多张报表刷新时间相近,就经常出现刷新失败的情况,以往是同一张报表设置了多个计划刷新以保证第一次刷新失败后能够在下个计划时间刷新。如下:

失败通知解决的刷新失败监控,但如果在刷新失败后让数据库尝试再次刷新岂不美哉?但又不能无限的失败刷新去循环,因为这种情况肯定是你报表配置出问题了,故我的思路如下:

当作业失败后,自动尝试再次刷新,若一天内刷新失败两次以上(包括两次)则不再尝试自动刷新并以邮件通知管理员。

那么如何实现如上步骤呢?脚本来了!在报表服务器所在的数据库,我是PowerBIReportServer系统默认名字,在SubscriptionHistory表中创建更新触发器,当初一直以为这个表是插入形式的,结果他是先插入后更新,把我绕了一大圈。


```sql
CREATE TRIGGER [dbo].[RefreshFailurereport]
ON [dbo].[SubscriptionHistory]AFTER update
AS
BEGINSET NOCOUNT ON;
declare
@b int,
@c nvarchar(max),
@d int
begin
select top(1) @b=Status,@c=subscriptionid from Subscriptionhistory order by endtime desc
select @d=count(subscriptionid) from Subscriptionhistory where subscriptionid=@c and Status=@b and left(starttime,10)=left(getdate(),10)
if (@b =2 and @d<2)
begin
WAITFOR DELAY '0:0:10'
exec [PowerBIReportServer].dbo.AddEvent --这边要注意换成你PowerowerBIshiyo所用的报表服务器数据库名
@EventType='DataModelRefresh',
@EventData=@c
end
else
if (@b =2 and @d>=2)
BEGIN EXEC msdb.dbo.sp_send_dbmail @profile_name = '配置名',--不知道的select [name] from [msdb].[dbo].[sysmail_profile]@recipients = '要发送的邮箱地址' , @body = '', --邮件内容我这边没设置@subject = 'PowerBi Report Refresh fail',--邮件标题@query = N'SELECT TOP 1[Path],left([LastStatus],19),[LastRunTime]FROM [PowerBIReportServer].[dbo].[Subscriptions] A0 WITH(NOLOCK)LEFT JOIN [PowerBIReportServer].[dbo].[Catalog] A1 WITH(NOLOCK)ON A0.Report_OID = A1.ItemIDLEFT JOIN [PowerBIReportServer].[dbo].[Users] A2 WITH(NOLOCK)ON A0.OwnerID = A2.UserIDwhere [EventType] = ''DataModelRefresh''and [LastStatus] <> ''Completed Data Refresh''order by lastruntime desc',--邮件内容展示的SQL,我这边所展示的是XX文件夹XX报表+失败时间@attach_query_result_as_file = 0, @query_result_header = 0,@body_format ='HTML';
END
END
END
GO

如上实现的效果就是想要的效果,至于SQL SERVER的邮件怎么配置各位就自己百度一下,很简单的。

最终测试了下作业,满足我想要的要求,两次刷新失败后自动发邮件给我:

结语:

第一次发文章,各位可能有更好的方法,欢迎和我交流,今后也会抽时间记录各种工作中的问题和好的方法。

原文作者:小小大世界

原文连接:https://blog.csdn.net/qq_43291403/article/details/103913156

PowerBI 报表服务器刷新失败自动重刷并邮件通知相关推荐

  1. 如何解决testng执行用例失败自动重跑问题

    如何解决testng执行用例失败自动重跑问题 参考文章: (1)如何解决testng执行用例失败自动重跑问题 (2)https://www.cnblogs.com/cheese320/p/847864 ...

  2. [Qt] TCP客户端与服务器断开连接自动重联机制

    TCP服务器断开连接自动重联机制 客户端加入定时器实现断线重联(客户端服务端代码见上一篇博客) 编译环境:Qt 5.9.5 ui界面如图: 代码如下 tcpclient.h #ifndef TCPCL ...

  3. 海信系统 重装服务器,海信电视如何重刷系统

    电视出现了故障之后就需要重刷系统,今天小编就来跟大家说一说海信电视如何重刷系统,希望可以给大家带来帮助,感兴趣的的朋友们可以跟随小编一起来了解一下. 一.海信电视如何重刷系统 1.我们在重刷系统的时候 ...

  4. 收集DC中失败的登录信息并邮件通知

    (注:本文参考以下前辈文章修改而来,源文章连接:http://itadmindev.blogspot.hk/2011/07/powershell-ad-dc-failed-logins-report. ...

  5. 苹果刷机服务器验证失败,iPhone手机刷机报错最全总结 教你学会分析手机问题出在哪...

    首先,让我们来看一下刷机的整个过程:验证CPU--验证存储器--验证硬盘--进度条(写硬盘)--到50%意味着硬盘完成--验证基带--写基带--到80%意味着基带完成--验证NFC--写NFC 1,基 ...

  6. 建立远程服务器链接失败,无法建立与远程邮件服务器的 TLS 连接 - Exchange | Microsoft Docs...

    无法建立到 Exchange Online 或 Exchange Online 中的远程邮件服务器的 TLS Exchange Server 2021/4/9 适用于: Exchange Online ...

  7. TestNG监听器实现失败自动截图、重跑、自定义html结果文件功能

    本文转载自孔庆云kevin<TestNG监听器实现失败自动截图.重跑.自定义html结果文件功能> 使用Testng框架搭建自动测试框架,经常会需要增加失败自动截图,以及失败重跑功能,下面 ...

  8. 无法连接到已配置的开发web服务器_Power BI 报表服务器极简安装指南

    ​本文是PowerBI星球嘉宾天行老师的力作,详细介绍了报表服务器的用处以及安装步骤,看完本文,你也可以轻松用上报表服务器,更方便的分享你的PowerBI报告. Power BI 报表服务器极简安装指 ...

  9. php报表服务器配置,服务器_SQL Server 2008升级报表服务器数据库,报表服务器数据库可以为一个 - phpStudy...

    SQL Server 2008升级报表服务器数据库 报表服务器数据库可以为一个或多个报表服务器实例提供内部存储.因为报表服务器数据库架构可能会因为推出新的 Reporting Services 版本而 ...

最新文章

  1. 高德地图2020最新版下载导航wince_导航定位错误致青城山严重拥堵,高德地图回应:已优化...
  2. python自定义函数画图_利用Python绘图和可视化(长文慎入)
  3. python分组求和_Python学习笔记之pandas索引列、过滤、分组、求和功能示例
  4. 小明分享|sigmstar SSD201/SSD202 针对RGB的LCD屏配置操作说明分享
  5. Web前端培训知识分享:2种离线安装npm包的方法
  6. 修改mysql数据库名方法_安全快速修改Mysql数据库名的5种方法
  7. Linux环境中Qt程序的手工发布
  8. 药品研发 计算机系统验证,基于验证的药品研发项目申报系统的设计
  9. php时间转分钟前,PHP把时间转换成几分钟前几小时前几天前
  10. tcpdump实战详解
  11. 【JAVA基础】HashSet、LinkedHashSet、TreeSet使用区别
  12. javascript的发展(周边插件的由来)
  13. 补码乘法实验原理_你真的理解补码吗?
  14. XMLHttpRequest发送POST请求
  15. python consulate_使用python测测你的系统最多能创建多少个线程 | 学步园
  16. 【Love2d从青铜到王者】第十篇:Love2d之类和类的继承(Classes And Inheritance)
  17. 收集一些电子书下载的网站
  18. 34岁程序员面试谈薪资被砍5K,网友:这么降不如在家睡觉
  19. 【.7z 格式文件的压缩、解压】
  20. 现在网络安全员工资一般多少(网络安全员平均工资)

热门文章

  1. 链表的插入、删除、排序的程序
  2. BZOJ-1951 古代猪文 (组合数取模Lucas+中国剩余定理+拓展欧几里得+快速幂)...
  3. PyCharm 5 破解注册方法
  4. 【NS2】在linux下安装低版本GGC
  5. 在asp.net 2.0中使用SqlBulkCopy类迁移数据
  6. adb logcat 基本用法
  7. 成员变量的声明位置引起编译错误
  8. 三次握手 四次握手 与socket函数的关系
  9. 空间换时间,查表法的经典例子
  10. mini2440驱动分析之LCD