操做環境:windows server 2003 R2 Enterprise Edition SP1 + 4G 內存 + Sqlsever 2005sql
在以上環境中,運行公司的ERP數據服務,sqlserver進程的內存佔用在穩按期一直是1600到1700之間,再高也沒有超過1700,而後ERP客戶端用戶常常發生保存單據幾分鐘都不成功的狀況,具體緣由不明,但重啓sqlserver服務就恢復正常,所以懷疑是內存太小的緣由。數據庫
如下步驟實現增長sqlserver內存分配量:windows
首先,在sqlserver management studio 中,在數據庫的服務器屬性中(非數據庫實例的屬性),是有內存配置選項的,其中最大服務器內存默認值是一個很大很大的值,但實際上根本沒有起做用,像我上面說的同樣,我服務器上的sqlserver進程佔用的安全
內存歷來沒有超過1700。服務器
也能夠經過如下語句實現配置:sqlserver
sp_configure 'show advanced options', 1 RECONFIGURE GO sp_configure 'awe enabled', 1 RECONFIGURE GO sp_configure 'min server memory', 1024 RECONFIGURE GO sp_configure 'max server memory', 3072 RECONFIGURE GO
可是若是沒有在操做系統的啓動配置文件裏(boot.ini)修改相關配置(添加/PAE),上面的設置是沒有起做用的。spa
因此要使上面的設置可用,須要完成下面的兩個必要條件:操作系統
1、編輯 Boot.ini 文件,請按照下列步驟操做:code
下面是我在原有配置下添加「 /PAE」後的結果server
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect /PAE
2、能夠運行sqlserver.exe的用戶(在服務的屬性中查看「登陸」)須要有「鎖定內存頁」的權限。在組策略中進行設置:
開始->運行->gpedit.msc->組策略->計算機配置->windows配置->安全設置->本地策略->用戶權限分配->內存中鎖定頁面->屬性->添加用戶或組
完成以上步驟後,重啓服務器,再看sqlserver進程佔用的內存,發現很小很小,90M左右,但這個其實不是真實的佔用,上面給它鎖定的內存頁應該沒有加進去。
昨天下班完成的設置,今天一天ERP沒有反饋任何保存不成功的問題,後續再進行觀察相關狀況。
再提醒下,以上設置都是基於文章開頭描述的運行環境,其它系統和環境可能已作改變,具體請查閱相關官方文檔。