导出大型报告时,SSRS会因OutOfMemoryException而崩溃



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

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

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

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

相关内容

最新更新