Sql server 监视SSRS订阅错误
使用SSRS 2012,我们利用报告订阅保存报告网络位置并通过电子邮件发送报告。我熟悉如何调试错误,但我正在寻找一种解决方案,以便在订阅发送失败时提醒我们的支持团队。说我为积极主动而疯狂 我看到了一个监视ReportServer表状态的解决方案,但它假设所有订阅都是通过电子邮件进行的 我还看到了执行日志表(ExecutionLog3),但该表似乎没有捕获所有错误。通过删除对文件位置的网络访问,我强制订阅失败,但该错误未显示在表中Sql server 监视SSRS订阅错误,sql-server,reporting-services,ssrs-2008,reportingservices-2005,Sql Server,Reporting Services,Ssrs 2008,Reportingservices 2005,使用SSRS 2012,我们利用报告订阅保存报告网络位置并通过电子邮件发送报告。我熟悉如何调试错误,但我正在寻找一种解决方案,以便在订阅发送失败时提醒我们的支持团队。说我为积极主动而疯狂 我看到了一个监视ReportServer表状态的解决方案,但它假设所有订阅都是通过电子邮件进行的 我还看到了执行日志表(ExecutionLog3),但该表似乎没有捕获所有错误。通过删除对文件位置的网络访问,我强制订阅失败,但该错误未显示在表中 我想写一个SSRS报告,可以运行它来查看一天内发生的所有订阅错误。
我想写一个SSRS报告,可以运行它来查看一天内发生的所有订阅错误。任何建议都将不胜感激。没有内置的方法可以做到这一点。您必须解析Windows错误日志或reporting services日志。我没有尝试过此操作,但ssrs api可能会返回基于订阅的报表的上次订阅状态,但是ReportingService数据库之外没有历史日志,即使在那里,我也不确定是否记录了故障。我使用了Microsoft的报表服务器诊断报告包 我没有用过这个,但我听说过
看看我在Jeff Prom的博客上找到的这个解决方案
这只处理最后一条状态消息,因此不能完全回答问题(我看到这篇文章是因为我在寻找相同的答案),但它似乎在捕获所有订阅错误方面对我有效,包括文件共享问题:
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
该状态仅为最后一个状态,因此不会提供所有失败的订阅,只提供最后一个。此外,“邮件发送到”和“新订阅”文本对于保存到网络位置的文件不起作用。成功状态为“文件名”已保存到“共享”文件共享。
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