【问题标题】:SSRS Report Server - Email on failure?SSRS 报告服务器 - 电子邮件失败?
【发布时间】:2019-08-10 12:01:02
【问题描述】:

我的公司使用 SSRS 向用户提供报告,通过电子邮件订阅或用户在浏览器中打开报告服务器页面并单击他们想要的报告,然后对数据库运行它。我称之为“交互模式”。

我的用户应该在报告失败时告诉我,所以我可以去修复它,但大多数时候他们不会。

所以我需要去寻找失败的报告。我已经可以使用 SSRS 中的订阅报告查看哪些电子邮件订阅报告失败了,但我需要一种方法来生成电子邮件或在其中一个交互模式报告失败时将一行记录到表中。

我在 Visual Studio 中看不到任何明显的东西可以让我这样做,以前有没有人提出过解决方案?

【问题讨论】:

  • 一开始为什么报告会失败?如果这是 T-SQL 中的错误,您需要在那里处理它;不在报告中。
  • 报告失败的原因有很多,包括表格缺失、数据格式错误、SQL 代码过时。你说得对,我需要修复 T-SQL,但为了做到这一点,我需要了解哪些报告失败了。我们有成千上万的报告,只有几十个失败。
  • 您可以检查 SSRS 的错误日志,但这些是文件,它们不存储在数据引擎中。如果您正在查询不存在的表,则问题听起来根本不像是 SSRS,而是正在运行的 SQL 的定义。
  • 我从来没有说过问题是 SSRS,我说问题是我无法弄清楚在交互模式下 SSRS 中哪些报告失败了。你是说有日志文件存储在数据库之外?请问他们是什么?我在哪里可以找到它们?

标签: sql-server reporting-services ssrs-2012


【解决方案1】:

默认情况下,SSRS 在报告服务器数据库中维护订阅和错误信息。

  • Subscriptions是报表服务器中所有订阅的目录信息表
  • SubscriptionHistory 维护错误的扩展详细信息。

使用以下脚本,您可以在一个地方监控所有订阅的最后状态,而不是通过 SSRS 网络界面。此外,您可以基于此开发自己的脚本:

select  c.ItemID as ReportItemID,
        c.Name as ReportName,
        c.Path as ReportLocation,
        s.Description as SubscriptionTitle,
        EventType,
        LastRunTime,
        LastStatus,
        CreationDate
from Subscriptions as s
     join Catalog as c on s.Report_OID = c.ItemID 
Where   LastStatus like '%failed%'
      or LastStatus like '%Error%'  
      and (NOT LastStatus like '%0 Errors.')
GO

【讨论】:

  • 谢谢,但我已经知道如何查看订阅详情。我想知道的是通过报告服务器网页临时触发的报告。用户可以导航到报告并单击它以按需运行它。此活动似乎没有出现在“订阅”表格中。
【解决方案2】:

事实证明,在 ReportServer 数据库中有一个非常有用的表,名为“ExecutionLog”,其中包含这些详细信息。

【讨论】:

    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2012-05-07
    • 2019-04-17
    • 1970-01-01
    相关资源
    最近更新 更多