You need to enable JavaScript to run this app. 创建SSRS报表展示RDL及订阅的历史订阅失败累计计数并支持钻取
优惠活动
大模型
产品
解决方案
定价
更多

创建SSRS报表展示RDL及订阅的历史订阅失败累计计数并支持钻取

SSRS订阅失败历史统计报表实现方案

需求背景

现有每日推送前一日订阅失败数据的定时订阅任务,需新增如下能力:

  1. 创建SSRS报表,展示每个RDL、每个订阅(多订阅场景)的历史订阅失败累计运行计数
  2. 支持钻取查看具体的失败原因

实现逻辑说明

1. SQL逻辑调整

原有参考SQL仅统计近24小时的失败数据,需调整时间过滤规则适配全量历史统计需求,同时新增分组聚合逻辑计算每个订阅的累计失败次数。

2. SSRS报表配置

  • 主报表:按RDL报表所属目录、RDL名称、订阅ID分组,展示每个订阅的累计失败次数、创建人、修改人等基础信息
  • 钻取功能:将RDL名称/订阅描述设为交互触发项,点击后跳转至子报表,子报表根据传入的RDL标识、订阅ID过滤出对应所有失败明细,展示每次失败的时间、具体错误原因等信息
  • 可配置时间参数,支持自定义查询指定时间段内的失败统计数据,适配不同排查需求

优化后参考SQL

-- 全量订阅失败明细临时表
IF OBJECT_ID('tempdb..#SubsFailHistory') IS NOT NULL DROP TABLE #SubsFailHistory
SELECT 
    LEFT(ca.[Path],CHARINDEX('/',SUBSTRING(ca.[Path],2,255))) RootPath,
    ca.[Name] AS RDLReportName,
    c.SubscriptionID,
    c.[Description] AS SubscriptionDesc,
    c.ExtensionSettings,
    c.LastStatus AS FailReason,
    cu.UserName AS CreatedByUserName,
    mu.UserName AS ModifiedByUserName,
    c.LastRunTime AS FailTime,
    c.ModifiedDate
INTO #SubsFailHistory
FROM [ReportServer].[dbo].[Subscriptions] c
LEFT JOIN [ReportServer].[dbo].[Catalog] ca ON ca.ItemID = c.Report_OID
LEFT JOIN [ReportServer].[dbo].[Users] cu ON cu.UserID = c.OwnerID
LEFT JOIN [ReportServer].[dbo].[Users] mu ON mu.UserID = c.ModifiedByID
-- 如需限定统计时间范围可放开下方注释调整时间阈值
-- WHERE c.LastRunTime >= DATEADD(day,-180,getdate())
WHERE c.[Description] <> 'DupeCheck'
AND (
    LastStatus like '%; [1-9]% errors%'
    OR LastStatus like '%failure%'
    OR LastStatus  = 'An error has occurred during report processing.'
    OR LastStatus = 'The subscription contains parameter values that are not valid.'
    OR LastStatus LIKE 'Error: %'
)

-- 主报表累计统计查询
SELECT 
    RootPath,
    RDLReportName,
    SubscriptionID,
    SubscriptionDesc,
    CreatedByUserName,
    ModifiedByUserName,
    COUNT(1) AS TotalFailCount
FROM #SubsFailHistory
GROUP BY RootPath,RDLReportName,SubscriptionID,SubscriptionDesc,CreatedByUserName,ModifiedByUserName
ORDER BY TotalFailCount DESC

-- 钻取子表明细查询(传入对应SubscriptionID即可)
/*
SELECT FailTime,FailReason,ExtensionSettings 
FROM #SubsFailHistory 
WHERE SubscriptionID = @TargetSubscriptionID
ORDER BY FailTime DESC
*/

原有定时推送任务兼容

原有每日推送近24小时失败数据的任务无需调整,继续使用原有限定c.LastRunTime >= DATEADD(hh,-24,getdate()的SQL逻辑即可。

内容的提问来源于stack exchange,提问作者efox12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 15:09:01