SSRS 电子邮件订阅事件触发器 - 数据值已更改(非定时订阅)



我希望 SSRS 报表根据报表数据集中的数据值更改发送报表订阅(电子邮件或文件共享(。

假设表中500 rows个最新数据都有"Update Time= 9/19 1:40 pm",然后50分钟后该表更新为插入带有"Update Time=9/19 2:30pm"的200 new rows。 此示例中的数据值更改是所有记录上的"更新时间"已更改。 我希望根据数据集记录中的此更改在下午 2:30 触发 SSRS,然后 SSRS 将通过电子邮件发送新的 200 条记录。

SSRS 可以进行这种交付吗? "数据驱动"是答案吗? (在我看来,数据驱动并不能解决这个问题;但也许我只是不理解?(。 快照更新能否实现此目的? (我以为快照也是时间驱动的?

SQL 版本:

Microsoft SQL Server 2016 (SP2-CU2) (KB4340355) - 13.0.5153.0 (X64) 
Jun 28 2018 17:24:28 
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Datacenter 6.3 <X64> (Build 9600: ) (Hypervisor)

注意:我将使用 RANK(( 窗口函数非常轻松地实现该分组——它会将所有内容分组为 1 (200( 行、2 (500( 行等。 我只会保留第 1 组,因此所有记录都将有新的"更新时间"。

https://learn.microsoft.com/en-us/sql/reporting-services/subscriptions/subscriptions-and-delivery-reporting-services?view=sql-server-2017#triggering-subscription-processing。

触发订阅处理

报表服务器使用两种类型的事件来触发订阅 处理:在计划中指定的时间驱动事件或快照更新事件

时间驱动触发器使用特定于报表的计划或共享 计划以指定订阅的运行时间。用于按需和缓存 报告、计划是唯一的触发选项。

快照更新事件使用报表快照的计划更新 以触发订阅。可以定义一个订阅: 每当使用新数据更新报告时触发,基于 在报表上设置的报表执行属性。

处理数据驱动订阅

数据驱动订阅可以生成许多报表实例,这些报表实例 运送到多个目的地。报表布局不会改变, 但是,如果传入参数值,则报表中的数据可能会有所不同 从订阅服务器结果集。影响 呈现报表以及报表是附加还是链接到 当值为 从行集传入。

数据驱动的订阅可以产生大量交付。 报表服务器为行集中的每一行创建一个传递 从订阅查询返回。

据我所知,你是对的。快照更新方法需要创建快照,并且快照只能按计划或由用户手动创建。

可能比数据驱动订阅开销更少的是,有一个存储过程运行最简单的查询来检测是否有任何相关数据已更改,如果是,则触发订阅。

EXEC dbo.AddEvent @EventType = 'TimedSubscription', @EventData = '00f4ecee-891d-445f-ae81-24ef62d3fb53'

其中事件数据是订阅 ID(复制"编辑订阅"链接以获取 ID(

当然,您必须每 15 分钟左右运行一次 SSIS 作业来执行存储过程,但我认为它比数据驱动订阅更好。

最新更新