症狀
在具有 GB 或更多 RAM 的計算機上除了 MB (SQL Server ) 或 MB (SQL Server ) 虛擬地址空間之外SQL Server 在啟動過程中保留剩下的所有虛擬地址空間以供緩沖池使用另外為了存儲數據和過程緩存SQL Server 使用緩沖池內存為來自 SQL Server 進程的大多數小於 KB 的其他內存請求提供服務剩下的未保留內存准備用於不能從緩沖池得到服務的其他分配這些分配包括但不限於以下各項 ;SQL Server 創建的所有線程的堆棧和關聯的線程環境塊在 SQL Server 創建了所有 個工作線程之後這大約為 MB
;由在 SQL Server 地址空間(根據具體系統而有所不同)中運行的其他 DLL 或進程進行的分配如 ;任何鏈接的服務器中的 OLE DB 提供程序
;通過使用 sp_OA 系統存儲過程或擴展存儲過程加載的 COM 對象
;加載到地址空間中的任何映像(exe 或 dll)這些映像通常使用 到 MB但是如果您使用鏈接的服務器sp_OA 或擴展存儲過程則這些映像可能使用更多的空間
;進程堆和 SQL Server 可能創建的任何其他堆在啟動過程中此空間通常為 MB但是如果您使用鏈接的服務器sp_OA 或擴展存儲過程則此空間可能更多
;來自 SQL Server 進程的大於 KB 的分配例如較大查詢計劃網絡數據包大小配置選項接近於 KB 時發送和接收緩沖區等情況所需要的分配要查看此數字請查找在 DBCC MEMORYSTATUS 中報告的 OS Reserved 值該值是作為 KB 頁的數目報告的通常該值為 MB
;跟蹤緩沖池中每個緩沖區狀態信息的數組該值通常約為 MB除非 SQL Server 運行時啟用了地址窗口化擴展插件 (AWE)在這種情況下該值將會顯著提高
在擁有大量數據庫的系統上日志格式化所需的 KB 分配可能會占用所有剩余的虛擬內存這之後的分配將失敗導致本文的症狀一節中列出的一個或多個錯誤
通過使用 g 啟動參數您可以指示 SQL Server 保留附加的虛擬內存可用以便這些與日志相關的分配和其他正常分配加在一起也不會用完虛擬地址空間
下表根據數據庫的數目和服務器版本列出 g 值的一些建議初始值 DatabasesSQL Server SQL Server
gN/A
gN/A
gN/A
gg
gg
gg
此表是使用列出的典型值進行計算的並且此計算是基於沒有使用鏈接的服務器活動sp_OA 或擴展存儲過程這一假設的它還假設您沒有使用 AWE 和 SQL 事件探查器出現以上任意一種情況都需要您增加 g 的值
如果服務器上數據庫的數目超過此數目Microsoft 建議您在運行該服務器之前進行慎重的考慮因為系統上具有如此數目的數據庫所需的系統開銷將占用緩沖池中的大量虛擬內存從而可能導致系統整體性能下降
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22493.html