2

使用 SSRS 2012,我们利用报告订阅来保存报告网络位置并通过电子邮件发送报告。我熟悉如何调试错误,但我正在寻找一种解决方案,以便在订阅发送失败时提醒我们的支持团队。称我为积极主动而疯狂。

我看到了一个监控 ReportServer 表状态的解决方案,但它假定所有订阅都是通过电子邮件进行的(仅处理电子邮件状态)

我还看到了执行日志表(ExecutionLog3),但该表似乎并未捕获所有错误。我通过删除对文件位置的网络访问强制订阅失败,但错误未出现在表中。

我想写一个 SSRS 报告,可以运行它来查看一天内发生的所有订阅错误。任何建议表示赞赏。

4

4 回答 4

4

这仅处理最后一条状态消息,因此不能完全回答问题(我遇到了这篇文章,因为我正在寻找相同的答案),但它似乎对我有用,可以捕获所有订阅错误,包括文件分享问题:

select count(*) 
from ReportServer.dbo.[Subscriptions] S 
where 0 = case 
          when S.[LastStatus] = 'New Subscription' then 1 
          when substring(S.[LastStatus],1,9) = 'Mail Sent' then 1 
          when substring(S.[LastStatus],1,5) = 'Done:' 
           and right(S.[LastStatus],9) = '0 errors.' then 1 
          when substring(S.[LastStatus],1,9) = 'The file ' 
           and patindex('%has been saved to the%',S.[LastStatus]) > 1 
           and right(S.[LastStatus],11) = 'file share.' then 1 
          else 0 
      end
于 2014-07-19T00:55:28.433 回答
1

我使用了 Microsoft 的 Report Server Diagnostic Reports 包

有关报告服务器诊断报告(快照)的详细信息

报告服务器诊断报告包的下载链接

我没用过,但我听说过

免费的 SQL Monitor SSRS 报告包

于 2013-09-11T17:10:24.807 回答
0

查看我在 Jeff Prom 的博客http://jeffprom.com/2008/08/22/ssrs-failed-subscription-notifications/上找到的解决方案

SELECT C.Name, S.LastRunTime, S.LastStatus, S.Description
 FROM Subscriptions AS S
 LEFT OUTER JOIN [Catalog] AS C
 ON C.ItemID = S.Report_OID
 WHERE LEFT (S.LastStatus, 12) != ‘Mail sent to’
   AND LEFT (S.LastStatus, 12) != ‘New Subscrip’
于 2013-12-17T14:50:00.803 回答
0

没有内置的方法可以做到这一点。您必须解析 Windows 错误日志或报告服务日志。我没有尝试过,但是 ssrs api 可能会返回基于订阅的报告的最后订阅状态,但是 ReportingService 数据库之外没有历史日志,即使在那里我也不确定是否记录了失败。

于 2013-09-11T00:55:12.270 回答