MSSQL 設計上會動態佔用所有可用記憶體作為緩衝集區,導致作業系統可用記憶體降至 4-10 MB,誤以為是記憶體洩漏。實際上這是預期行為,只需設定「最大伺服器記憶體」即可釋放資源給 OS 與其他應用。
微軟官方說明
- SQL Server 啟動後記憶體持續上升至實體記憶體上限,不表示洩漏。
- 緩衝集區管理器會在其他進程需要時釋放記憶體(秒級響應)。
- 「最大伺服器記憶體」僅限制緩衝集區,不限制延伸預存程序、COM 物件等非保留區域。
圖形介面設定最大記憶體
- 開啟「企業管理員」/ SSMS,連線執行個體。
- 右鍵執行個體 → 「屬性」→ 「記憶體」頁籤。
- 取消勾選「動態配置」,或直接在「最大伺服器記憶體 (MB)」輸入數值(建議預留 2-4 GB 給 OS)。



T-SQL 設定腳本
-- 設定最大記憶體為 8 GB (8192 MB),最小 1 GB
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 8192; RECONFIGURE;
EXEC sp_configure 'min server memory (MB)', 1024; RECONFIGURE;
生效方式
設定完成後,**重啟 SQL Server 服務** 即可生效(動態調整無需重啟,但建議重啟確保穩定)。
參考文獻
- KB 319942: HOW TO: Determine Proper SQL Server Configuration Settings
- KB 316749: PRB: Large Databases May Cause Out-of-Memory Conditions
- SQL Server 線上叢書:記憶體架構、伺服器記憶體選項、緩衝集區