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

前言:

大家好,我是小小大世界,初来乍到,作为一名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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 270. 最接近的二叉搜索树值

文章目录1. 题目2. 解题2.1 暴力查找2.2 二分查找1. 题目 给定一个不为空的二叉搜索树和一个目标值 target&#xff0c;请在该二叉搜索树中找到最接近目标值 target 的数值。 注意&#xff1a; 给定的目标值 target 是一个浮点数 题目保证在该二叉搜索树中只会存在一个最接近…

RDLC报表其余空白页问题

1.预览时正常&#xff0c;打印或转PDF后最后多出一页空白页的问题解决办法&#xff1a; 只要把报表主体的高度和所要打印的列表或表单高度一样&#xff08;使两者的底部重合即可&#xff09;2.预览时正常&#xff0c;打印时每页后面多出一页空白页解决办法&#xff1a;主要是报…

getset原子性 redis_一文看透 Redis 分布式锁进化史(解读 + 缺陷分析)

各个版本的Redis分布式锁V1.0V1.1 基于[GETSET]V2.0 基于[SETNX]V3.0V3.1分布式Redis锁&#xff1a;Redlock总结《Netty 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与…

MYSQL中有时候不得不使用replace()去掉特殊字符,写在这里备用一下

LOWER&#xff08;&#xff09;的作用是把所有的大小写统统变成小写&#xff1b; LOWER(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(repla…

LeetCode 702. 搜索长度未知的有序数组(二分查找)

文章目录1. 题目2. 解题1. 题目 给定一个升序整数数组&#xff0c;写一个函数搜索 nums 中数字 target。 如果 target 存在&#xff0c;返回它的下标&#xff0c;否则返回 -1。注意&#xff0c;这个数组的大小是未知的。 你只可以通过 ArrayReader 接口访问这个数组&#xff0…

11个非常漂亮动物为主题的高品质图标集

今天发布一些令人振奋的动物为主题的图标集。这里收集了世界各地的设计师和艺术家的图标集杰作&#xff0c;如果你在做卡通设计网站&#xff0c;这个是你合适的选择 Birdie Adium Dock Icons Animals Tweeties: A Free Twitter Icon Set Birdies Zoom-eyed Creatures FREE Plus…

ae中心点重置工具_7步学习AE 入门篇 第2步 初学乍练

【1】做动画需要什么&#xff1f;如果动画的制作是因果关系&#xff0c;那么需要的成因具备了 结果自然就出现了。在AE中做动画一共需要3个工具&#xff0c;合成、关键帧和图层。在体验动画制作之前 我们对一些名词术语先来解释一下。合成&#xff1a;AE中用来承载视频的容器&a…

成员变量的声明位置引起编译错误

常规的Objective-c的声明范例&#xff1a; interface Sample:NSObject{private int ID;}- (void)Done; (void)Finish;end 声明的成员变量的位置在*.h上&#xff1b;现在之所以在这里提及成员变量的声明问题&#xff0c;在于和XCode版本有关在雪豹上的Xcode是4.0.1版本&#xff…

PowerBI,自定义编辑同一页面中不同图表之间的交互,使页面交互更灵活

Power BI默认情况下&#xff0c;图表之间自动关联交互&#xff0c;如果取消或者更改交互方式&#xff0c;使用编辑交互功能即可&#xff0c;关于编辑交互的设置方法&#xff0c;可以参考这篇文字&#xff1a; https://zhuanlan.zhihu.com/p/64412190

LeetCode 359. 日志速率限制器(哈希map)

文章目录1. 题目2. 解题1. 题目 请你设计一个日志系统&#xff0c;可以流式接收日志以及它的时间戳。 该日志会被打印出来&#xff0c;需要满足一个条件&#xff1a;当且仅当日志内容 在过去的 10 秒钟内没有被打印过。 给你一条日志的内容和它的时间戳&#xff08;粒度为秒…

linux 内存溢出排查_【开发者成长】JAVA 线上故障排查完整套路!

云栖号资讯&#xff1a;【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01;线上故障主要会包括 CPU、磁盘、内存以及网络问题&#xff0c;而大多数故障可能会包含不止一个层面的问题&#xff0c;所以进行…

【mysql】提取字符串中的数字、字母、中文,或任意组合

DELIMITER $$ DROP FUNCTION IF EXISTS Num_char_extract$$ CREATE FUNCTION Num_char_extract(Varstring VARCHAR(100)CHARSET utf8, flag INT) RETURNS VARCHAR(50) CHARSET utf8 COMMENT 标识 0 提取数字 1 提取字母 2提取数字字母 3 提取汉字 4 提取汉字数字字母 BEGINDECL…

C#托管代码与C++非托管代码互相调用一(C#调用C++代码.net 代码安全)

在最近的项目中&#xff0c;牵涉到项目源代码保密问题&#xff0c;由于代码是C#写的&#xff0c;容易被反编译&#xff0c;因此决定抽取核心算法部分使用C编写&#xff0c;C到目前为止好像还不能被很好的反编译&#xff0c;当然如果你是反汇编高手的话&#xff0c;也许还是有可…

LeetCode 249. 移位字符串分组(哈希)

文章目录1. 题目2. 解题1. 题目 给定一个字符串&#xff0c;对该字符串可以进行 “移位” 的操作&#xff0c;也就是将字符串中每个字母都变为其在字母表中后续的字母&#xff0c;比如&#xff1a;“abc” -> “bcd”。这样&#xff0c;我们可以持续进行 “移位” 操作&…

有趣的数学 - 123数学黑洞 - Python代码实现

123数学黑洞简介&#xff1a; 设定一个任意数字串X&#xff0c;数出这个数中的偶数个数a&#xff0c;奇数个数b&#xff0c;位数c&#xff0c;然后将三个数字按照abc的顺序拼接起来&#xff08;拼接&#xff0c;而非相加相乘&#xff09;&#xff0c;abc拼接成一个新的数字串X…

如何扩大缓存区_艾莱依首个自动化仓落地,库宝解决线边缓存难题

中国拥有着世界上最大的服装生产和消费市场&#xff0c;随着新零售的发展和消费习惯的改变&#xff0c;消费个性化浪潮、提倡消费体验等为服装领域带来诸多挑战&#xff0c;如何打造更为柔性的、高效的服装供应链成为企业提升竞争力的一大核心。针对工厂自动化环节&#xff0c;…

LeetCode 170. 两数之和 III - 数据结构设计(哈希map)

文章目录1. 题目2. 解题1. 题目 设计并实现一个 TwoSum 的类&#xff0c;使该类需要支持 add 和 find 的操作。 add 操作 - 对内部数据结构增加一个数。 find 操作 - 寻找内部数据结构中是否存在一对整数&#xff0c;使得两数之和与给定的数相等。 示例 1: add(1); add(3); …

PowerBI 报表平台首页报表列表加载慢

Power BI 加载时会进行用户身份验证&#xff0c;如果没有部署域控制器&#xff0c;验证就会超时。因此部署域控制器就会解决首页加载慢的问题

在ASP程序中访问Access数据库

嵌入式培训教程 在基于微软IIS/PWS的网络平台上&#xff0c;通过服务器端运行的ASP程序来访问后台数据库&#xff0c;是一种最常见的模式了。而对于小型的数据库应用需求&#xff0c;微软的Access数据库&#xff0c;应该是与ASP程序配套使用的首选。由于Access数据库的ODBC驱动…

MySQL - 创建存储过程Procedure,Do While实现循环

处理数据的时候&#xff0c;往往需要回溯历史&#xff0c;比如给用户分群后计算每个群体的用户数趋势&#xff0c;那么就需要计算截止到每一天的各个群体的用户数量&#xff0c;这个时候我们就需要创建存储过程&#xff0c;并且在存储过程中增加循环的功能&#xff0c;以此来实…