4

我创建了一个 rdl 文档,它指向一个返回 90 000 行的 proc,但我遇到了内存不足的异常。报表项目可以处理的行数是否有限制?

目前,我已将驱动我的报告的 proc 更改为仅选择 Top 90 000。我的规范是能够创建一个包含 120 000 行的报告。我的报告是一个矩阵。

我发誓上周我生成了一份包含 106800 行的报告,但现在我突然不能了。

我已经编写了一个渲染扩展,当我进入代码时,这是异常的一部分。

eInfo:2/12/2009 12:03:53 PM prairieFyre.ReportActions.RenderReport:错误呈现报告 Microsoft.Reporting.WinForms.LocalProcessingException:本地报告处理过程中发生错误。---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:报告处理中发生意外错误。---> System.OutOfMemoryException:引发了“System.OutOfMemoryException”类型的异常。在 System.IO.MemoryStream.set_Capacity(Int32 value) 在 System.IO.MemoryStream.EnsureCapacity(Int32 value) 在 System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) 在 System.IO.BinaryWriter .Write(String value) 在 Microsoft.ReportingServices.ReportProcessing.Persistence.IntermediateFormatWriter.ReportServerBinaryWriter.WriteString(String stringValue) ....

4

3 回答 3

4

除了您的硬件配置之外,我认为没有限制。如果您在 32 位机器上,正在处理它的工作进程的可用内存不到 2 GB,当您考虑内核模式内存时,可能接近 1 GB。如果您要提供这样的大型报告,您可能需要一个 64 位设置,至少有 4 GB 或更多内存。此设置将允许工作进程分配超过 2 gig 的可用内存来完成这些大型请求而不会出现问题。

如果硬件升级不是一个选项,您也可以考虑这些替代方案。

  • 您说该报告是矩阵报告,因此听起来您并未向用户显示所有数据,而是对其进行汇总。您能否在数据库中预先汇总一些此类数据,然后仅使用 SSRS 进行显示?

  • 由于报告只不过是一个 XML 文件,因此可以从 SQL 服务器内或使用某些脚本或进程构建报告 XML 字符串。这可能是很多工作。

于 2009-02-12T17:45:16.453 回答
3

堆栈表明用于存储报表执行结果的 MemoryStream 不能增加(加倍)它的大小。

这通常是由地址空间碎片引起的,通常无法通过添加硬件来解决。

Microsoft ReportViewer 可以处理的数据量受到限制,因为它旨在将中间报告执行结果存储在 MemoryStream 中,不幸的是,它需要二次增长量的连续可用地址空间,这在通常的 .NET 应用程序中(2GB 地址空间) 不大于 256MB,而且通常比这小得多。

例如,在此流中,所有字段值、聚合值、表达式和图像都被存储,因此大小直接取决于添加到报告中的数据集的大小。

要分析 .NET 应用程序的地址空间和对象,最好使用 WinDBG(Windows 调试工具)和 SOS 扩展进行调试。

分析地址碎片的有用命令是:

  • !address -摘要
  • 流明
  • !EEHeap -gc
  • !DumpHeap -stat

在这种特殊情况下,可以通过预先聚合已经在数据源中而不是在矩阵中的值来减少数据量。

知识库文章“使用 SQL Server Reporting Services 时可能会收到 'System.OutOfMemoryException' 错误消息”[1] 提供了更多提示。

[1]: http: //support.microsoft.com/kb/909678使用 SQL Server Reporting Services 时出现“System.OutOfMemoryException”错误消息

于 2010-08-02T11:52:46.197 回答
0

检查您的 interactiveHeight 属性是否未设置为 0。 https://web.archive.org/web/20150515073010/http://www.bidn.com/blogs/MMilligan/bidn-blog/2903/ssrs-gotcha-interactiveheight =0

于 2012-07-27T22:51:05.343 回答