2012-12-11 31 views
0

我們擁有適用於SQL 2012 Express的SSRS報告。我們需要以OPENXML格式導出報告。有一個C#控制檯應用程序將所需的參數傳遞給SSRS,檢索導出的報告並將其保存到文件中。我們的報告有一些參數,直到生成報告時纔會知道。當導出大型報告時,SSRS與OutOfMemoryExceptions崩潰

報告使用HttpWebRequest導出。當我們有大約50,000行的中型報告時,一切正常。但是,當我們有500,000行的報告時,eportingServicesService.exe開始佔用服務器上所有可用的RAM,並且SSRS經常因OutOfMemory異常而崩潰。我們也嘗試了ReportServer組件導出報告,但這沒有任何區別。

有什麼辦法可以告訴SSRS它不應該試圖一次生成整個報告,而是通過塊發送它或通過HttpWebResponse流?由此產生的文件大約只有40MB,所以在生成此報告時,爲什麼SSRS服務使用超過500MB的RAM和100%的CPU呢?

+0

你很可能是在「尖端」 - 祝你好運! –

+0

您可能是對的,我們將直接從數據庫導出。看起來,SSRS對於這樣的任務來說太重了,或者可能存在一些隱藏的調整...... – JustAMartin

+0

SSRS可能是一個糟糕的選擇 - 高容量數據導出顯然不是它所做的主流。但我懷疑大多數/許多工具都會與這種規模的XML文檔發生衝突。請注意,OPENXML格式被壓縮,因此40MB將代表更大的未壓縮XML文件。 –

回答

2

我有與SSRS導出到Excel 300000行相同的問題;在我的情況下,解決方案是在sql server中構建一個clr存儲過程,並在我的web應用程序中調用它。

+0

有趣。你能告訴我更多,這個存儲過程是做什麼的? – JustAMartin