SQL Server在記憶體過低狀況下產生的異常問題

SQL Server在記憶體過低狀況下產生的異常問題

 

緣由 : 日前無意間將SQL ServerMax Server Memory設為128MB。一改完設定後SQL馬上發生異常,

無法正常連上線。重啟後看似有正常啟動,但是要透過SSMSsqlcmd連線皆無法連上Server。就算

想用DAC,也是無法連上伺服器。在此做個紀錄也分享給大家。

 

 

 

步驟一 : 如下圖紅色圈選處,我們故意將Max Server Memory調整為128MB

clip_image002

 

 

 

步驟二 : 我們透過Configuration Manager重啟SQL Server,如下圖所示SQL顯示正在執行。clip_image004


 

 

 

步驟三 : 此時我們透過SSMS去連線SQL Sever,會發現看似已正常啟動的SQL會無法提供連線,

而且錯誤訊息是千奇百怪。(如下面兩張圖)

clip_image006clip_image008

 

 

 

 

步驟四 : 此刻到事件檢視器會看見Error訊息,很明顯地告訴我們記憶體不足。

clip_image010

 

 

 

 

 

步驟五 : SSMSsqlcmd或是DAC皆無法登入Server該怎麼辦呢? 我是使用-m的老方法來重啟

SQL Server注意 : 我在爬文過程中,有人表示在此一狀況下用-m的方式仍無法正常讓SQL啟動,

他最後是利用-f的參數才成功啟動SQL然後改設定

clip_image012

 

 

 

 

步驟六 : -m重啟SQL Server後再利用sqlcmd登入Server。如下圖所示,我們可以正常登入了,此時再

利用sp_configure去將Max Server Memory的值加大。設定完成後請重啟SQL Server

clip_image014


 

 

 

 

步驟七 : 如下圖所示,當我們再重啟SQL Server後。我們就可以再用SSMS登入Server了。

clip_image016

 

 

 

 

 

步驟八 : 我們回頭再去看看當我們將Max Server Memory500MB降為128MB後,SQL的紀錄檔中可

以看見當我們完成修改後不久即產生一個Failed to allocate BUFs: FAIL_BUFFER_ALLOCATION 8的錯

誤訊息(如下圖紅色圈選處)

clip_image018

結論 :

 

(1)    微軟建議安裝SQL Server的最小記憶體應大於512MB

http://msdn.microsoft.com/zh-tw/library/ms143506.aspx#pmosr

 

(2)    當使用–m參數無法順利啟動SQL時,可以嘗試使用 –f 參數。

 

我是ROCK

rockchang@mails.fju.edu.tw