[SQL Server]how to resolve insufficient memory

設定錯誤的Maximum Server Memory導致無法啟動SQL Server,

解決該問題大約只要3秒鐘。

之前我在開發In-Memory時,發生一件有趣的事讓我印象深刻,

該公司的資深開發人員需要重新設定SQL Server的Maximum server memory,

當他透過SSMS並輸入一半時(只輸入1000 MB),不小誤按Enter,

接下來沒幾秒就是SQL Service自動停止並無法啟動,

而Error Log會出現記憶體不足的錯誤訊息(模擬如下圖)

SQL Server was unable to run a new system task, either because there is insufficient memory or the number of configured sessions exceeds the maximum allowed in the server.

 

正確解決方法就是重新設定正確的maximum server memory,

但我們必須先使用-f啟動SQL Server。啟動參數加入 -f(使用最小組態啟動SQL Server)

然後使用sqlcmd進行連接該SQL Instance

sqlcmd -S your sql instance –E

連接成功後,輸入以下scripts修改maximum server memory

sp_configure 'max server memory', 120960;
go;
RECONFIGURE;
Go
--checking
select value_in_use from sys.configurations
where name ='max server memory (MB)'

最後移除-f 啟動參數,並重新啟動SQL Services,搞定收工。

 

參考

​Database Engine Service Startup Options
[SQL SERVER][Memo]如何更新system catalogs
[SQL SERVER][Memo]如何啟用遠端DAC
[SQL SERVER][TS] 讓 SQL Express 版本也能使用DAC