【sql】sqlserver因设置最大内存(256)过小导致无法启动的修复

场景

因为有需求需要把当前sqlserver的使用内存降下来,但是不方便重启sqlserver服务,所以就从网上查找如何释放内存。看到很多文章都是坑爹的把最大内存设置为256,然后再设置成一个最大值的思路。魔性代码如下:

CREATE proc [dbo].reclaimmemory  --强制释放内存
as
begin
 DBCC FREEPROCCACHE 
 DBCC FREESESSIONCACHE 
 DBCC FREESYSTEMCACHE('All') 
 DBCC DROPCLEANBUFFERS
exec sp_configure 'max server memory', 256 
EXEC ('RECONFIGURE' )
WAITFOR DELAY '00:00:05'
EXEC  sp_configure 'max server memory', 2147483647 
EXEC ('RECONFIGURE' )
GO

执行这段代码后,sqlserver的服务就崩溃了,根本无法重新启动。看到的解释是因为设置最大内存过小导致无法运行起来。我当时的运行报错也差不多,似乎是设置成256后没能功能设置成更大的最大内存。执行失败后,整个服务就处于宕机状态。

解决方案

查了些资料,都是从cmd启动个最精简版的sqlserver服务,然后在上面执行设置代码,最后重启成功。

http://www.7kb.org/1048.html
https://blog.csdn.net/foreveryangting/article/details/79076682
http://www.mamicode.com/info-detail-1910981.html

我使用的是第三个。找个sqlservr.exe的目录,启动cmd,并执行命令:

sqlservr.exe -sMSSQLSERVER -mSQLCMD –c -f -m

在这里插入图片描述
这里我不太能理解-mSQLCMD的实际意义,觉得应该用处不大。不过我的bug已经解决了,也就没有办法尝试。
然后再开一个cmd窗口,执行sqlcmd -E -S IP\<实例名>
成功登录后就可以运行重新设置最大内存的代码了。我使用的代码如下:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 最大内存数;
GO
RECONFIGURE;
GO

成功运行后,关闭所有窗口,重新启动sqlserver服务即可。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值