【发布时间】:2021-02-16 01:52:24
【问题描述】:
我有一份 SSRS 报告,我想将其包含在电子邮件正文中,并通过订阅安排它每晚运行,但我只希望在报告中存在差异时发送电子邮件。我可以在报告上有一个文本框,其中包含表示差异的真或假值。
【问题讨论】:
标签: reporting-services subscription
我有一份 SSRS 报告,我想将其包含在电子邮件正文中,并通过订阅安排它每晚运行,但我只希望在报告中存在差异时发送电子邮件。我可以在报告上有一个文本框,其中包含表示差异的真或假值。
【问题讨论】:
标签: reporting-services subscription
如果您拥有 SQL Server 企业版,则可以使用 Data Driven Subscriptions 触发您的报告,使其仅在存在差异时运行。
如果您没有企业版,您可以创建一个存储过程来检查您的报告是否存在差异,如果存在则触发报告。
我通常使用已经过去的时间创建一次性订阅,这样报表服务器就不会触发它。创建订阅后,单击它以编辑订阅并从网络浏览器的地址栏中复制订阅 ID。
您将创建一个存储过程,该过程使用报表中的相同查询来检查是否存在任何差异,但不是返回记录,而是获取计数或其他指标:
DECLARE @RECORDS INT = (SELECT COUNT(*) FROM TABLE WHERE <SAME CRITERIA AS REPORT>)
DECLARE @SUBSCRIPTION_ID VARCHAR(100) = '<YOUR REPORT'S SUBSCRIPTION'S DI FROM ADDRESS BAR>'
IF @RECORDS > 0
EXEC ReportServer.dbo.AddEvent @EventType = 'TimedSubscription', @EventData = @SUBSCRIPTION_ID;
然后当存储过程运行时,它将检查查询,如果有任何记录将触发您的订阅发送带有嵌入式报告的电子邮件订阅。
然后,您需要安排一个作业,以根据报告所需的任何时间表运行 SP。
【讨论】: