Matrix RDLC中的内存异常

时间:2012-11-27 07:15:25

标签: asp.net rdlc

我正在研究RDLC报告,其中我使用矩阵来显示数据。

但问题是,当加载大量数据时,报告未打开,而是显示错误System.Outofmemoryexception.

没有带有大量数据的矩阵的报告工作正常。

我试图加载的记录大约是80,000条记录。有人遇到过同样的问题吗?

1 个答案:

答案 0 :(得分:0)

当满足以下一个或多个条件时,计算机没有足够的内存来完成请求的操作:

  • 报告太大或太复杂。
  • 其他正在运行的进程的开销非常高。
  • 计算机的物理内存 太小了。

报告分两个阶段处理。这两个阶段是执行和渲染。在执行阶段或呈现阶段可能会发生此问题。

如果在执行阶段发生此问题,则很可能发生此问题,因为查询结果中返回的数据占用的内存太多。此外,以下因素会影响执行阶段的内存消耗:

  • 分组
  • 过滤
  • 聚合
  • 排序
  • 自定义代码

如果在呈现阶段出现此问题,则原因与报告显示的信息以及报告显示信息的方式有关。

解决方案:

  1. 将SQL Server配置为使用超过2 GB的物理内存
  2. 安排报告在内存限制较低时在非工作时间运行。
  3. 相应地调整MemoryLimit设置。
  4. 升级到64位版本的Microsoft SQL Server 2005 Reporting Services。
  5. 重新设计报告就像 在报表查询中返回较少的数据。 对报告查询的WHERE子句使用更好的限制。 将复杂聚合移动到数据源。
  6. 将报告导出为其他格式。您可以使用其他格式显示Excel,PDF等报告
  7. ,从而减少内存消耗
  8. 简化报告设计,例如在报告中包含较少的数据区域或控件,或使用钻取报告显示详细信息。