监控SSRS订阅错误

时间:2013-09-10 21:21:46

标签: sql-server reporting-services ssrs-2008 reportingservices-2005

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

我看到了一个监控ReportServer表状态的解决方案,但它假定所有订阅都是通过电子邮件发送(only handles email statuses)

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

我使用过Microsoft的Report Server Diagnostic Reports包

More info about the Report Server Diagnostic Reports (snapshots)

Download link for Report Server Diagnostic Reports Pack

我没有用过这个,但我听说过它

Free SQL Monitor SSRS Reporting Pack

答案 2 :(得分:0)

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

答案 3 :(得分: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’