SSRS-矩阵报告的内存不足异常

时间:2019-07-12 16:07:54

标签: sql-server reporting-services visual-studio-2019

我正在尝试通过SSRS设计一个Matrix报告,以汇总另一列(即数据透视表)中一系列动态值的列。该数据仅包含1300万行,因此它是一个大型数据集。

通过T-SQL在此数据上进行PIVOT时,它能够在大约1分钟内聚合所有这些行,但是当让SSRS通过Matrix报告为我做枢轴操作时,尝试在PC上预览报告时遇到OutOfMemory异常。

返回数据集本身的查询并不复杂,它很简单:

SELECT
    ID
    ,Test_Ref
    ,Data_issue_indicator
FROM MyTable

在我们尝试为Data_issue_indicator中的值做1的总和(可以是0Test_Ref)中,其中有一个要汇总的动态值范围;换句话说,我们不能使用标准的Tablix报告,因为如果将新的Test_Ref值引入数据集,则列数可以随时增加。

我正在使用Visual Studio Enterprise 2019,我的PC是Windows 10,i7-8850H,具有16GB内存。

是否有解决此问题的建议?

2 个答案:

答案 0 :(得分:1)

使用SSRS时,如果多次使用数据集,建议一次获取更多数据。但是,当您拥有更大的数据集时,就需要在要实现的目标与所有数据之间进行权衡。

因此,在这种情况下,我建议使用一个过程来限制您要从报告中获取的数据量。

我经历了这种情况,我必须做同样的事情,因为不是查询超时,而是加载到报表的大量数据使报表失败。

如果您具有SQL Server Profiler,则将看到SQL已执行并完成,但是报表渲染超时。

答案 1 :(得分:0)

有两个想法,假设您计划将报表部署到具有内存的服务器来处理此问题,并且出于某种原因,您宁愿在报表服务器而不是SQL服务器上进行此处理: / p>

  1. 不要在Visual Studio中测试PC上的功能。设计报表,将其部署到报表服务器,然后在其中进行测试以查看其是否有效。

  2. 在PC上进行测试时,以某种方式强制其使用更小的数据集:一个足够大的数据集可验证透视矩阵是否有效,但又足够小以使PC的内存可以处理它。

    < / li>

或者更好的方法是执行选项2,然后执行选项1。

相关问题