前幾天看了幾篇文章,提到了如何使用報表伺服器資料庫建立觸發器,在報表重新整理失敗時自動發郵件通知,心裡想著這個功能挺實用的,不需要整點去看報表是否成功重新整理,或者後台查報表的重新整理日誌。
不過進一步思考了一下,大家都知道,報表伺服器報表多了之後,若都是匯入模式製作的報表,難免要定時重新整理,但多張報表重新整理時間相近,就經常出現重新整理失敗的情況,以往是同一張報表設定了多個計畫重新整理以保證第一次重新整理失敗後能夠在下個計畫時間重新整理。如下:
失敗通知解決的重新整理失敗監控,但如果在重新整理失敗後讓資料庫嘗試再次重新整理豈不美哉?但又不能無限的失敗重新整理去迴圈,因為這種情況肯定是你報表配置出問題了,故我的思路如下:
當作業失敗後,自動嘗試再次重新整理,若一天內重新整理失敗兩次以上(包括兩次)則不再嘗試自動重新整理並以郵件通知管理員。
那麼如何實現如上步驟呢?指令碼來了!在報表伺服器所在的資料庫,我是powerbireportserver系統預設名字,在subscriptionhistory表中建立更新觸發器,當初一直以為這個表是插入形式的,結果他是先插入後更新,把我繞了一大圈。
```
sqlcreate
trigger
[dbo]
.[refreshfailurereport]
on[dbo]
.[subscriptionhistory]
after
update
asbegin
set nocount on
;declare
@bint
,@c nvarchar(max),@d
intbegin
select
top(1)
@b=status,@c
=subscriptionid from subscriptionhistory order
by endtime desc
select@d=
count
(subscriptionid)
from subscriptionhistory where subscriptionid=
@cand
status=@b
andleft
(starttime,10)
=left
(getdate(),
10)if(
@b=2and
@d<2)
begin
waitfor delay '0:0:10'
exec
[powerbireportserver]
.dbo.addevent --這邊要注意換成你powerowerbishiyo所用的報表伺服器資料庫名
@eventtype
='datamodelrefresh'
,@eventdata=@c
endelseif(
@b=2and
@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.itemid
left join [powerbireportserver].[dbo].[users] a2 with(nolock)
on a0.ownerid = a2.userid
where [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';
endend
endgo
最終測試了下作業,滿足我想要的要求,兩次重新整理失敗後自動發郵件給我: 安裝 Power BI 報表伺服器
建議在安裝 power bi 報表伺服器之前先檢視安裝 power bi 報表伺服器所要滿足的硬體和軟體要求。power bi premium 如果已購買 power bi premium,則可以在 power bi 管理門戶的 premium 設定 選項卡中訪問 power bi 報表伺服器產品金...
報表字段重新整理
我們把報表上傳伺服器上之後,每次開啟頁面的時候,瀏覽器都從伺服器上讀取資料,所以展現的都是資料庫裡最新的資料,但是現在有這麼乙個需求,我們把這個頁面展示給大家看,一直開啟著頁面,那麼這個頁面不會自動重新整理,我們需要手動重新整理頁面,現在將乙個如何設定報表字段重新整理。開啟sql server bu...
3報表編輯器 Power BI 中的報表編輯器導覽
在 power bi desktop 和 power bi 服務中,報表編輯器用於設計終端使用者所看到的報表,其中包含圖表 地圖和其他視覺物件 這在兩個環境中是類似的。通常情況下,首先在 power bi desktop 中建立報表。然後將報表發布到 power bi 服務,可在其中繼續修改報表。還...