給sqlserver配置內存參數


操作環境:windows server 2003 R2 Enterprise Edition SP1 + 4G 內存 + Sqlsever 2005

在以上環境中,運行公司的ERP數據服務,sqlserver進程的內存占用在穩定期一直是1600到1700之間,再高也沒有超過1700,然后ERP客戶端用戶經常發生保存單據幾分鍾都不成功的情況,具體原因不明,但重啟sqlserver服務就恢復正常,因此懷疑是內存過小的原因。

以下步驟實現增加sqlserver內存分配量:

首先,在sqlserver management studio 中,在數據庫的服務器屬性中(非數據庫實例的屬性),是有內存配置選項的,其中最大服務器內存默認值是一個很大很大的值,但實際上根本沒有起作用,像我上面說的一樣,我服務器上的sqlserver進程占用的

內存從來沒有超過1700。

也可以通過以下語句實現配置:

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),上面的設置是沒有起作用的。

所以要使上面的設置可用,需要完成下面的兩個必要條件:

一、編輯 Boot.ini 文件,請按照下列步驟操作:

  1. 單擊“開始”,指向“設置”,然后單擊“控制面板”。
  2. 在“控制面板”中,雙擊“系統”。
  3. 單擊“高級”選項卡,然后單擊“啟動和故障恢復”下的“設置”。
  4. 在“系統啟動”下,單擊“編輯”。

下面是我在原有配置下添加“ /PAE”后的結果

multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect /PAE

二、可以運行sqlserver.exe的用戶(在服務的屬性中查看“登錄”)需要有“鎖定內存頁”的權限。在組策略中進行設置:

開始->運行->gpedit.msc->組策略->計算機配置->windows配置->安全設置->本地策略->用戶權限分配->內存中鎖定頁面->屬性->添加用戶或組

 

完成以上步驟后,重啟服務器,再看sqlserver進程占用的內存,發現很小很小,90M左右,但這個其實不是真實的占用,上面給它鎖定的內存頁應該沒有加進去。

昨天下班完成的設置,今天一天ERP沒有反饋任何保存不成功的問題,后續再進行觀察相關情況。

再提醒下,以上設置都是基於文章開頭描述的運行環境,其它系統和環境可能已做改變,具體請查閱相關官方文檔。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM