在 SQL Reporting Services 中提高数据驱动订阅性能的最佳方法是什么?

What is the best way to improve performance of data driven subscriptions in SQL Reporting Services?

我需要每天通过电子邮件发送数千份报告以支持业务运营。目前我使用 SQL Server Reporting Services 来实现它。尽管 SSRS 非常稳定可靠,但对于我的特定用例来说它似乎也很慢,需要 30 多分钟才能完成一些数据驱动的订阅。

数据驱动订阅为我们提供了在报表服务器中存储 T-SQL 查询的机会,该查询 select 是我们要发送到的电子邮件地址以及我们要提供的参数进入报告并按计划将其设置为 运行。这很有用,因为它允许我们 select 部门、货币和其他参数,以最适合收件人的方式个性化报告。然而,即使是只有几个参数的报告,也有有限的、少量的排列。例如,对于我们每天用来发送 10k 封电子邮件的一份报告,每天只发送 12 个排列。我真正想要的是用这 12 种排列预加载缓存。

SSRS 允许您缓存报告。我打开它并保留默认的 30 分钟,当 运行 使用数据驱动订阅时它似乎没有效果。换句话说,我 运行 订阅发送了大约 950 封电子邮件,缓存关闭然后缓存打开,订阅的 运行 时间是相同的——没有影响。

我也尝试过使用快照,这听起来很完美。不幸的是,快照仅适用于默认参数值。似乎没有办法用可能的参数值的每个排列来存储快照——这就是我想我想要的。从已经组装的快照中通过电子邮件发送数千份报告应该会大大加快速度。

有没有人找到任何解决方法?

您是否可以减少数据驱动订阅背后的视图中的行数?

例如

to: joe@abc.com   parameter1:55
to: billy@abc.com parameter1:55
to: bob@abc.com   parameter1:66`

会是

bcc: joe@abc.com, billy@abc.com parameter1:55
bcc: bob@abc.com                parameter1:66

我认为寻找避免生成 10k 倍相同文件的方法比通过缓存等优化性能更好。如果你不能像上面那样做,我会尝试让 ssrs 生成你需要的文件然后处理订阅外部的电子邮件。