You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询过去30天从未成功运行的SSRS订阅并编写对应SQL?

问题排查

你当前的SQL存在分组逻辑错误:将Status和TimeEnd加入GROUP BY后,语句只会筛选出近30天内「存在失败运行记录」的订阅,无法排除掉同一时间段内有过成功运行的订阅,不符合「从未成功运行」的筛选要求。

可行实现方案

方案1:直接查询近30天无成功记录的报告路径

核心逻辑是先过滤近30天的所有运行记录,按报告路径分组后统计成功运行次数,筛选出成功次数为0的路径:

SELECT ItemPath
FROM [ReportServer].dbo.ExecutionLog3 EX
WHERE TimeEnd >= DATEADD(day, -30, GETDATE())
GROUP BY ItemPath
HAVING SUM(CASE WHEN Status = 'rsSuccess' THEN 1 ELSE 0 END) = 0

方案2:关联订阅表获取完整信息(方便后续禁用操作)

如果需要获取订阅ID、所有者等完整信息,直接用于后续禁用操作,可以关联SSRS的订阅表、目录表查询:

SELECT 
    s.SubscriptionID,
    c.Path AS ItemPath,
    c.Name AS ReportName,
    u.UserName AS SubscriptionOwner,
    s.LastRunTime,
    s.LastStatus
FROM [ReportServer].dbo.Subscriptions s
INNER JOIN [ReportServer].dbo.Catalog c 
    ON s.Report_OID = c.ItemID
INNER JOIN [ReportServer].dbo.Users u 
    ON s.OwnerID = u.UserID
WHERE s.SubscriptionID IN (
    SELECT ex.SubscriptionID
    FROM [ReportServer].dbo.ExecutionLog3 ex
    WHERE ex.TimeEnd >= DATEADD(day, -30, GETDATE())
    GROUP BY ex.SubscriptionID
    HAVING SUM(CASE WHEN ex.Status = 'rsSuccess' THEN 1 ELSE 0 END) = 0
)

拿到查询结果中的SubscriptionID后,你可以直接更新Subscriptions表对应记录的状态即可完成禁用操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:57:02