現象與根因
SQL Server 2000 引入**動態記憶體管理**,**回收機制不積極**。長時間不重啟 → 記憶體單調增長 → 系統可用記憶體歸零 → **死機/服務凍結**。
兩種解決路徑
- 定期重啟: 每週重啟一次釋放記憶體 (治標)。
- 配置最大記憶體上限 (治本): 強制 SQL Server 在上限回收/停止增長。
圖形介面配置步驟 (企業管理器)
- 啟動 **企業管理器** (開始 → Microsoft SQL Server → 企業管理器)。
- 展開控制台樹:控制台根節點 → Microsoft SQL Servers → SQL Server 群組 → **(Local)**。
- 右鍵 **(Local)** → **屬性** → **記憶體** 索引標籤。
- 勾選/設定 **最大記憶體 (MB)**,依角色建議值:
| 伺服器角色 | 建議最大記憶體佔比 |
| 純資料庫伺服器 | 總記憶體 80-90% |
| 兼域控制器 | 60-70% |
| 兼 Web 伺服器 | 建議 ≤ 60% |
- 確定 → **重啟 SQL Server 服務** 生效。
T-SQL 等效指令 (適合腳本化/自動化)
EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'max server memory (MB)', 4096; -- 例: 4GB
RECONFIGURE;
核心原則
- **留足 OS 與其他服務記憶體** (最少 1-2 GB),避免系統分頁抖動。
- 專用 DB 伺服器可給更多,但**永遠保留緩衝**。
- 配置後**必須重啟服務** (或等待動態生效,視版本)。
一個上限設定,徹底根治記憶體耗盡隱患。