【问题标题】:SSRS crashes with OutOfMemoryExceptions when exporting large reports导出大型报告时 SSRS 崩溃并出现 OutOfMemoryExceptions
【发布时间】:2012-12-11 17:21:03
【问题描述】:

我们有 SQL 2012 Express 的 SSRS 报告。我们需要以 OPENXML 格式导出报告。有一个 C# 控制台应用程序将所需的参数传递给 SSRS,检索导出的报告并将其保存到文件中。我们的报告有一些参数在生成报告之前是未知的。

使用 HttpWebRequest 导出报告。当我们有大约 50,000 行的中型报表时,一切正常。但是当我们有 500,000 行的报告时,eportingServicesService.exe 开始消耗服务器上所有可用的 RAM,并且 SSRS 经常因 OutOfMemory 异常而崩溃。我们还尝试了 ReportServer 组件来导出报告,但这没有任何区别。

有什么方法可以告诉 SSRS 它不应该尝试一次生成整个报告,而是分块发送或通过 HttpWebResponse 流式传输?生成的文件只有大约 40MB,所以我真的不清楚为什么 SSRS 服务在生成此报告时使用超过 500MB 的 RAM 和 100% 的 CPU。

【问题讨论】:

  • 你可能处于“最前沿”——祝你好运!
  • 您可能是对的,我们最终将直接从数据库中导出。看来,SSRS 对于这样的任务来说太重了,或者可能有一些隐藏的调整......
  • SSRS 可能是一个糟糕的选择——大容量数据导出显然不是它的主流。但我怀疑大多数/许多工具都会在这种规模的 XML 文档中遇到困难。请注意,OPENXML 格式已压缩,因此 40MB 将代表一个更大的未压缩 XML 文件。

标签: c# reporting-services export sql-server-express ram


【解决方案1】:

我在 SSRS 导出到 Excel 300000 行时遇到了同样的问题;在我的情况下,解决方案是在 sql server 中构建一个 clr 存储过程并在我的 Web 应用程序中调用它。

【讨论】:

  • 有趣。你能告诉更多,那个存储过程是做什么的?
猜你喜欢
  • 2013-01-30
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多