防止在没有企业版的情况下通过电子邮件发送空白 SSRS 报表(无数据驱动选项)



我一直在研究这个问题,还没有找到一个可行的答案,或者足够简单。

我在 SSRS 中内置了几个报告,我每天都通过电子邮件发送给自己。它们运行生成结果的存储过程,然后有时使用报表中的可见性函数对其进行更多筛选,或者与其他存储的过程结果进行比较。

我遇到的问题是,有时,在所有过滤器之后(无论是在存储过程中,还是按报告过滤后),都没有数据,我得到一个带有标题的"空白"报告,没有其他任何东西。我正在努力消除这些。但是,我无法执行数据驱动订阅,因为我没有 SQL Server 的企业版。我找到的防止这些空白报告的几乎每一个答案都涉及这样做。没有数据驱动,还有另一种方法可以做到这一点吗?啪!

您可以按计划运行存储过程,然后触发报表订阅(如果有记录),而不是报表触发存储过程。

您已经完成了大部分工作。

你只需要

  1. 结束订阅,使其不再自动运行
  2. 添加逻辑以检查报表的记录 -DECLARE @CHECK AS INT = (SELECT COUNT(*) FROM <REPORT QUERY>)
  3. 然后IF @CHECK > 0,使用以下命令触发当前订阅:

    EXEC dbo.AddEvent @EventType = 'TimedSubscription', @EventData = 'xxx';

将 xxx 替换为报表订阅 ID(可在订阅链接中找到)。EXEC 不关心你的订阅是否具有步骤 1 的结束日期。

然后,只需计划存储过程按计划运行即可。报表服务器上应有一个可以使用的作业代理。

最新更新