我正在尝试优化在同一个表上使用多个存储过程的报表.不幸的是,每个程序都在读取数百万条记录并汇总结果.这是一个非常强烈的报告读取,但每个存储过程都经过优化,可以在SSMS中快速运行.
我可以运行每个存储过程并在10到20秒内获得结果集.当我将它们全部放入SSRS中的一个报告中时,报告会超时.
每个存储过程总共有4个参数.全部定位到同一个表,只是以不同的方式聚合数据.这些表的索引与查询内联.它基于时间,用户和我用于COUNT()DISTINCT和NONDISTINCT的一个维度.
我认为问题在于SSRS在同一个表上同时运行4个程序而不是一个接一个地运行.这是真的?如果是这样,无论如何都要确保SSRS不会并行运行它们?
我唯一的选择是创建已经预先聚合的汇总表.然后只需从该表中运行报告.否则,我猜param嗅探也是可能的.
默认情况下,SSRS中的数据集是并行执行的.
如果所有数据集都引用相同的数据源,则可以通过以下方式配置单个连接上数据集的序列化执行:
在报表设计器中打开数据源对话框
确保选中Use Single Transaction复选框
选中该复选框后,不再并行执行使用相同数据源的数据集.
我希望能解决你的问题.