在 SQL Server 2008 Management Studio 中執行超過 100 MB 的大型 SQL 腳本檔案時,拋出 System.OutOfMemoryException 異常,導致執行中斷。
管理工作站記憶體不足,無法一次載入並解析龐大的腳本內容。Microsoft 官方說明指出,報表服務的記憶體限制會影響查詢結果處理與物件模型轉譯,尤其在執行階段(群組、篩選、彙總、排序、自訂代碼)與轉譯階段(控制項數量、關聯、格式、資料量)均可能耗盡記憶體。
將大型 .sql 檔案切分為多個較小的檔案(各 < 50 MB),依序執行,避免單次記憶體壓力過大。
為伺服器或工作站加裝 RAM。若超過 2 GB,可在 Boot.ini 啟用 /3GB 開關以提升使用者模式位址空間。參考:KB 274750
在系統負載較低的時段(如深夜)執行大型腳本,減少記憶體競爭。
Machine.config 讀取設定。RSReportServer.config。64 位元版本可突破 32 位元 2 GB 使用者模式記憶體限制,徹底解決大型報表轉譯記憶體不足問題。
某 160 頁 PDF 報表,資料集 500 MB,轉譯需 ~1.5 GB 記憶體。解決方式:修改報表僅顯示篩選後的摘要資料,並將彙總移至資料庫查詢執行,成功將資料量大幅縮減,順利完成轉譯。