SSRS - 矩阵报告的 OutOfMemory 异常
SSRS - OutOfMemory exception for Matrix report
我正在尝试通过 SSRS 设计一个 Matrix
报告,以针对另一列(即数据透视表)中的一系列动态值聚合一列。此数据包含超过 1300 万行,因此它是一个大型数据集。
当通过 T-SQL 对此数据执行 PIVOT
时,它能够在大约 1 分钟内聚合所有这些行,但是当让 SSRS 通过Matrix
报告,当我尝试在我的 PC 上预览报告时遇到 OutOfMemory 异常。
返回数据集本身的查询并不复杂,很简单:
SELECT
ID
,Test_Ref
,Data_issue_indicator
FROM MyTable
我们尝试对 Test_Ref
中的值求和 Data_issue_indicator
(可以是 1
或 0
),其中是要聚合的值的动态范围;换句话说,我们不能使用标准的 Tablix
报告,因为如果在数据集中引入新的 Test_Ref
值,列的数量随时可能增加。
我正在使用 Visual Studio Enterprise 2019,我的电脑是 Windows 10,i7-8850H,16GB 内存。
是否有解决此问题的建议?
两个想法,假设您计划将报表部署到有内存处理此问题的服务器,并且您更愿意在报表服务器而不是 SQL 上执行此处理服务器出于某种原因:
不要在 Visual Studio 中测试您 PC 上的功能。设计报表,将其部署到您的报表服务器,然后在那里测试它是否有效。
在您的 PC 上进行测试时,以某种方式强制它使用小得多的数据集:一个刚好足以验证旋转矩阵是否有效,但又小到您的 PC 内存可以处理它的数据集。
或者更好的是,执行选项 2,然后执行选项 1。
使用SSRS时,建议多抓取一次数据,以防多次使用数据集。但是当您拥有更大的数据集时,需要在您想要实现的目标与您是否需要所有数据之间进行权衡。
所以在这种情况下,我建议使用一个程序来限制您抓取到报告的数据量。
我经历过这种情况,我也不得不这样做,因为超时的不是查询,而是加载到报告中的大量数据导致报告失败。
如果您有 SQL 服务器分析器,您会看到 SQL 已执行并完成,但报告呈现超时。
我正在尝试通过 SSRS 设计一个 Matrix
报告,以针对另一列(即数据透视表)中的一系列动态值聚合一列。此数据包含超过 1300 万行,因此它是一个大型数据集。
当通过 T-SQL 对此数据执行 PIVOT
时,它能够在大约 1 分钟内聚合所有这些行,但是当让 SSRS 通过Matrix
报告,当我尝试在我的 PC 上预览报告时遇到 OutOfMemory 异常。
返回数据集本身的查询并不复杂,很简单:
SELECT
ID
,Test_Ref
,Data_issue_indicator
FROM MyTable
我们尝试对 Test_Ref
中的值求和 Data_issue_indicator
(可以是 1
或 0
),其中是要聚合的值的动态范围;换句话说,我们不能使用标准的 Tablix
报告,因为如果在数据集中引入新的 Test_Ref
值,列的数量随时可能增加。
我正在使用 Visual Studio Enterprise 2019,我的电脑是 Windows 10,i7-8850H,16GB 内存。
是否有解决此问题的建议?
两个想法,假设您计划将报表部署到有内存处理此问题的服务器,并且您更愿意在报表服务器而不是 SQL 上执行此处理服务器出于某种原因:
不要在 Visual Studio 中测试您 PC 上的功能。设计报表,将其部署到您的报表服务器,然后在那里测试它是否有效。
在您的 PC 上进行测试时,以某种方式强制它使用小得多的数据集:一个刚好足以验证旋转矩阵是否有效,但又小到您的 PC 内存可以处理它的数据集。
或者更好的是,执行选项 2,然后执行选项 1。
使用SSRS时,建议多抓取一次数据,以防多次使用数据集。但是当您拥有更大的数据集时,需要在您想要实现的目标与您是否需要所有数据之间进行权衡。
所以在这种情况下,我建议使用一个程序来限制您抓取到报告的数据量。
我经历过这种情况,我也不得不这样做,因为超时的不是查询,而是加载到报告中的大量数据导致报告失败。
如果您有 SQL 服务器分析器,您会看到 SQL 已执行并完成,但报告呈现超时。