Select the product you need help with
當您使用 SQL Server 報表服務時,可能會收到 System.OutOfMemoryException 」 錯誤訊息文章編號: 909678 - 檢視此文章適用的產品。 在此頁中徵狀當您使用 Microsoft SQL Server 2000 報告的服務,或者您使用 Microsoft SQL Server 2005 報表的服務時,可能會收到下列錯誤訊息: 報表伺服器上發生內部錯誤。 請參閱錯誤記錄檔,以取得更多詳細資料。(rsInternalError)取得線上說明 型別的 System.OutOfMemoryException 擲回例外狀況。 System.OutOfMemoryException: 型別的 System.OutOfMemoryException 擲回例外狀況。 事件 1
發生的原因此電腦沒有足夠的記憶體可完成要求的作業,就會發生這個問題。 SQL Server 2000 報告服務 」 中的限制會導致某些部分的報表處理會繫結的記憶體。例如,查詢結果處理和物件模型轉譯為繫結的記憶體。 此電腦沒有足夠的記憶體完成要求的作業時一或多個下列條件,則為 True:
如果這個問題發生在執行階段期間,發生這個問題很可能是因為太多記憶體的消耗被在查詢結果中傳回的資料。此外,下列因素會影響在執行階段期間的記憶體耗用量:
http://msdn2.microsoft.com/en-us/library/aa179471(SQL.80).aspx
(http://msdn2.microsoft.com/en-us/library/aa179471(SQL.80).aspx)
解決方案如果要解決這個問題,使用下列方法之一。 方法 1新增到電腦的足夠的實體記憶體。附註如果您超過 2 GB 的記憶體您可以啟用 / 3GB 切換取得更好的效能 Boot.ini 檔案中。 如需有關如何在 SQL Server 中使用 / 3GB 參數的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]: 274750
(http://support.microsoft.com/kb/274750/
)
如何設定 SQL Server 使用 2 GB 以上實體記憶體 方法 2排程報告,以在 off-hours 記憶體條件約束是較低時執行。方法 3調整 MemoryLimit 依此設定。附註當呈現報告服務網站透過報表服務,報告服務 Web 服務取得 MemoryLimit 設定從 Machine.config 檔。不過,排程的報表呈現由報表伺服器 」 Windows 服務。在報表伺服器 」 Windows 服務會從 RSReportServer.config 檔案中取得 MemoryLimit 設定值。 如需有關 [MemoryLimit] 設定的詳細資訊,請參閱 < 其他相關資訊 > 一節。 方法 4升級至 64 位元版本的 Microsoft SQL Server 2005 報表的服務。方法 5重新設計報表。如果要執行此動作使用其中一個下列的方法。方法 A重新設計報表查詢。您可以重新設計報表查詢以下列方式來減少記憶體耗用量:
方法 B匯出報表,到不同的格式。您可以使用不同的格式顯示報表,以減少記憶體耗用量。下表列出順序從大部分的記憶體耗用量到最小記憶體耗用量的幾個匯出格式。摺疊此表格
方法 C簡化報表設計。您可以下列方式簡化報表設計來減少記憶體耗用量:
範例下列範例示範如何解決這個問題。 請看下列的範例:
其他相關資訊當您使用 [SQL Server 2000 報告服務可能會遭遇記憶體相關的問題所造成發生下列錯誤情況之一:
System.OutOfMemoryException 錯誤是當作業向系統要求更多的記憶體,而系統無法提供記憶體時,就會引發由 SQL Server 2000 報表服務的錯誤。此錯誤時 SQL Server 2000 報表服務關機程序不安全的方式。關機] 是不安全的因為 SQL Server 2000 報表服務共用執行要求間的資源。因此,SQL Server 2000 報表服務不能保證資料是為所有要求仍然安全。 記憶體限制是一組設定來協助保護系統避免潛在 destabilizing 條件。 比方說限制幫助防止報表伺服器的記憶體處理從使用太多記憶體。透過 MemoryLimit 設定,並透過 MaximumMemoryLimit RSReportServer.config 檔中定義的設定,會指定記憶體限制。當達到記憶體限制時,Microsoft.NET Framework 會引發錯誤 (SQL Server 2000 報表服務實際執行的記憶體用完前)。 您可以呈現報表從一個網站或從排定的工作。因此,錯誤狀況可能會發生在兩個不同的環境,在 [SQL Server 2000 報告服務。環境如下所示:
報告服務 Web 服務與 System.OutOfMemoryException 錯誤在 SQL Server 2000 報表服務記錄檔中記錄的例外狀況訊息和類似下列訊息的關機郵件 (ReportServerService_ <timestamp>.log):w3wp! 庫! 1b3c! 07/11/2005年-10:38:00:: e 錯誤: 找到 System.OutOfMemoryException 例外狀況: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: 型別 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 擲回的例外狀況。---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: 型別 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 擲回的例外狀況。---> System.OutOfMemoryException: 型別 System.OutOfMemoryException 擲回的例外狀況。 w3wp! 程式庫! 1b3c! 07/11/2005年-10:38:00:: e 錯誤: 結束工作者處理序 \Microsoft SQL Server\ <Instance of SQL Server> \Reporting Services\LogFiles 此外,應用程式記錄檔會記錄類似下列的事件的事件:
如果要解決這個問題,可以新增更多實體記憶體到系統,或減少記憶體耗用量,其他處理程序。 在理想的情況下,您可以調整 MemoryLimit 設定或 應用程式集區 設定的 Microsoft 網際網路資訊服務 (IIS) 6.0 之前發生記憶體不足狀況攔截到錯誤時。因此,處理程序是處理更多依正常程序。您必須試驗一下此設定,您一定會先到達記憶體限制不保證。 報告服務 Web 服務與記憶體限制訊息被記錄在 Windows 事件記錄檔和 SQL Server 2000 報表服務記錄檔中。報告服務 Web 服務記錄檔指出處理程序正在關閉。不過,SQL Server 2000 報告服務不會控制關機],而且無法記錄關於關機] 的錯誤資訊。您可能會注意到下列事件之一記錄應用程式記錄檔中: 事件 1
您可以變更 <processmodel>] 下的記憶體限制 Machine.config 檔中的區段。 附註如果您在原生模式下 Machine.config 檔不會使用執行 IIS 6.0。記憶體限制是由應用程式集區,在 IIS 6.0 中的內容所控制。 如需有關在 ASP.NET 和 IIS 6.0 中的記憶體組態的詳細資訊,請造訪下列 MSDN 網站:
「 報表伺服器 」 Windows 服務及 System.OutOfMemoryException 錯誤報表不傳遞至檔案共用,或傳送給訂閱的收件者。當排定呈現程序會自動重新啟動時,處理程序嘗試再次執行相同的訂閱,做為復原程序的一部分。在 SQL Server 2000 報表服務記錄檔中記錄類似下列的錯誤訊息的錯誤訊息:ReportingServicesService! 程式庫! 618! 7/9/2003年-16: 06: 01:: 狀態: 錯誤: 型別 System.OutOfMemoryException 擲回的例外狀況。 ReportingServicesService! 通知! 618! 7/9/2003年-16: 06: 01:: 傳遞提供者擲回的錯誤: System.OutOfMemoryException: 型別 System.OutOfMemoryException 擲回的例外狀況。 ReportingServicesService! 通知! 618! 7/9/2003年-16: 06: 01:: 通知 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 完成。成功: False,狀態: 錯誤: 型別 System.OutOfMemoryException 擲回的例外狀況,DeliveryExtension: 報告伺服器電子郵件,報告: 發票,嘗試 0 ReportingServicesService! dbpolling! 618! 7/9/2003年-16: 06: 01:: NotificationPolling 完成處理的項目 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 ReportingServicesService! servicecontroller! 568! 7/9/2003年-16: 09: 30:: i 資訊: 要求的記憶體限制式應用程式網域回收 ReportingServicesService! servicecontroller! 568! 7/9/2003年-16: 09: 30:: i INFO: 回收服務從預設網域 ReportingServicesService! dbpolling! 568! 7/9/2003年-16: 09: 30:: EventPolling 輪詢停止服務 ReportingServicesService! dbpolling! 87 c! 7/9/2003年-16: 09: 30:: EventPolling 結束停駐點的活動訊號執行緒。 ReportingServicesService! dbpolling! 568! 7/9/2003年-16: 09: 30:: NotificationPolling 輪詢服務已停止 ReportingServicesService! dbpolling! 880! 7/9/2003年-16: 09: 30:: NotificationPolling 活動訊號執行緒結束停駐點。 ReportingServicesService! dbpolling! 568! 7/9/2003年-16: 09: 30:: SchedulePolling 輪詢停止服務 您不能設定任何設定,以避免這個問題。藉由在電腦上的記憶體數量以及記憶體耗用量,其他處理程序,這個問題會受到影響。 如果要解決這個問題,可以新增更多實體記憶體到電腦,或減少記憶體耗用量,其他處理程序。 報表伺服器 」 Windows 服務,而且記憶體限制報表不傳遞至檔案共用,或傳送給訂閱的收件者。訂閱的 [狀態] 屬性具有 「 執行緒中止 」 值。錯誤訊息類似下列的錯誤訊息記錄在 SQL Server 2000 報表服務記錄檔:ReportingServicesService! reportrendering! 17a8! 09/28/2005年-16: 10: 12:: e 錯誤: 擲回 Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: 型別 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 擲回的例外狀況,; 資訊: Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException: 型別 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 擲回的例外狀況。---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException: 型別 Microsoft.ReportingServices.ReportRendering.ReportRenderingException 擲回的例外狀況。---> System.threading.ThreadAbortException: 執行緒已被中止。 ReportingServicesService! runningjobs! 17a8! 09/28/2005年-16: 10: 12:: i INFO: CancelableJobExecution.Execute 抓到某些其他的執行緒中止例外 ReportingServicesService! 程式庫! 17a8! 09/28/2005年-16: 10: 12:: i 資訊: 初始化 EnableExecutionLogging] 設為 'True' 做為伺服器系統屬性中指定。 ReportingServicesService! runningjobs! 1810年! 09/28/2005年-16: 10: 12:: i INFO: CancelableJobExecution.Execute 抓到某些其他的執行緒中止例外 ReportingServicesService! 程式庫! 1810年! 09/28/2005年-16: 10: 12:: i 資訊: 初始化 EnableExecutionLogging] 設為 'True' 做為伺服器系統屬性中指定。 ReportingServicesService! dbpolling! 1810年! 09/28/2005年-16: 10: 12:: 將 requeued NotificationPolling 不再處理項目 6e786bb5-3e4d-462a-92 fc-2942e6aec007, ReportingServicesService! dbpolling! 1810年! 09/28/2005年-16: 10: 12:: 佇列背景工作執行緒攔截到未處理的例外狀況: System.Threading.ThreadAbortException: 執行緒已被中止。 在 Microsoft.ReportingServices.library.NotificationQueueWorker.HandleNotification(QueueItem item) 在 Microsoft.ReportingServices.library.NotificationQueueWorker.QueueWorker(QueueItem item) 在 Microsoft.ReportingServices.Library.QueuePollWorker.WorkItemStart (物件狀態) 報表伺服器 」 Windows 服務會嘗試完成現有的要求。此外,報表伺服器 」 Windows 服務會監視其本身的組態設定,以確定要求的作業不會超過記憶體限制。如果要求的作業不會超過記憶體限制,報表伺服器 」 Windows 服務會停止處理序。會在報表伺服器 」 Windows 服務自動變成失敗的工作啟動工作清單。當報表伺服器 」 Windows 服務重新啟動時,報表伺服器 」 Windows 服務會嘗試重新執行工作。 RSReportServer.config 檔案中的兩個設定會影響記憶體組態。MaximumMemoryLimit 設定,並在 <service>[MemoryLimit 設定了特定的項目 標記。 這些值代表實體記憶體的百分比。如果記憶體消耗量的現有要求到達 MemoryLimit 的設定值指定的百分比,報表伺服器 」 Windows 服務會停止採取額外的要求。但是,繼續目前正在進行中的要求。 之後的可用記憶體小於 MemoryLimit 的設定值指定的百分比,會再次接受新的要求。 如果記憶體消耗量的現有要求到達 MaximumMemoryLimit 的設定值指定的百分比,報表伺服器應用程式定義域會終止。 這些設定模仿 <processmodel>] 下的記憶體限制 Machine.config 檔中區段和有效的運作方式相同。這些設定會提供報告服務 Web 服務和報表伺服器 」 Windows 服務之間的一致性。 ?考如需詳細資訊請參閱下列主題在 SQL Server 線上叢書:
屬性文章編號: 909678 - 上次校閱: 2009年11月24日 - 版次: 3.0 這篇文章中的資訊適用於:
機器翻譯 重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:909678
(http://support.microsoft.com/kb/909678/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 |




回此頁最上方








