Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 导出大型报告时,SSRS会崩溃,并出现OutOfMemoryException_C#_Reporting Services_Export_Sql Server Express_Ram - Fatal编程技术网

C# 导出大型报告时,SSRS会崩溃,并出现OutOfMemoryException

C# 导出大型报告时,SSRS会崩溃,并出现OutOfMemoryException,c#,reporting-services,export,sql-server-express,ram,C#,Reporting Services,Export,Sql Server Express,Ram,我们有SQL 2012 Express的SSRS报告。我们需要以OPENXML格式导出报告。有一个C#控制台应用程序,它将所需的参数传递给SSRS,检索导出的报告并将其保存到文件中。我们的报告有一些参数,直到生成报告时才知道 报告是使用HttpWebRequest导出的。当我们有大约50000行的中型报告时,一切正常。但是,当我们有500000行的报告时,eportingServicesService.exe开始消耗服务器上所有可用的RAM,SSR通常会因OutOfMemory异常而崩溃。我们还

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

报告是使用HttpWebRequest导出的。当我们有大约50000行的中型报告时,一切正常。但是,当我们有500000行的报告时,eportingServicesService.exe开始消耗服务器上所有可用的RAM,SSR通常会因OutOfMemory异常而崩溃。我们还尝试使用ReportServer组件导出报告,但这没有任何区别


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

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

您可能处于“前沿”——祝您好运!您可能是对的,我们最终将直接从数据库导出。看起来,SSR对于此类任务来说太重了,或者可能有一些隐藏的调整……SSR可能是一个糟糕的选择——大容量数据导出显然不在它的主流功能中。但我怀疑大多数/许多工具都会难以处理如此规模的XML文档。注意,OPENXML格式是压缩的,因此40MB将代表一个更大的未压缩XML文件。你能告诉我更多的信息吗,这个存储过程是做什么的?