SQL Server最大内存设设置太小导致无法启动SQL 服务

场景

SQL Server 右键属性,设置服务器属性最大服务器内存为 100MB,设置太小造成SQL 服务无法启动。

悲剧开始。。。。 幸亏不是生产环境。(奉劝各位不要随意改配置,要了解所以然)

很显然问题原因是:限制内存并应用后,SQLServer内存不足自动停止,并且无法正常启动之

 

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

1.正常关闭SQL Server服务,如果是集群,需要先关停止集群角色防止故障转移,然后再单独关闭服务。

cmd命令:net stop mssqlserver

--注意这一步可能会使实例处于挂起状态很长时间,但是正常关闭是必须的,直接杀进程可能造成数据文件损坏。

2.找这个sqlservr.exe的目录(每个人的物理地址可能多少有差异,请注意),启动cmd,并执行命令:

首先开启一个CMD窗口1,执行cmd命令:  
cd   C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn

接着执行cmd命令:   sqlservr.exe -f -s MSSQLSERVER
MSSQLSERVER 默认实例名,可修改为你实际实例名修改
-f最小模式启动实例

 

图一  sqlservr.exe的目录:(定位到目录)

执行cmd命令:  cd   C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn

图二 打开cmd命令,定位到 sqlservr.exe的目录,并执行命令 sqlservr.exe -f -s MSSQLSERVER

 

3.不要关闭第一次cmd命令,注意不要关闭,另外开启一个新的cmd 命令窗口2,立即运行下面命令进入命令行模式

执行:sqlcmd -E -s MSSQLSERVER

--注释
sqlcmd -E 
--如果是命名实例则:
sqlcmd -E -S IP\<实例名> 
注意命名实例需要开启SQL server Browser服务,才能连接。
4.修复,就本故障来说,修改内存最大值为不限制
接着在第二个窗口有限一下修改配置

EXECsp_configure 'show advanced options', '1' RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'max server memory', 2147483647 RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'show advanced options', '0' RECONFIGURE WITH OVERRIDE;
GO
 
5.关闭cmd窗口1,正常启动SQLServer实例(注意关闭窗口1,窗口2不要关闭)

启动成功则OK,如果启动不成功,检查错误日志修复其它参数,直至启动成功。

启动成功后可根据需要重新调整合适的参数
后话,即使上边动作都按照操作执行,可能还会遇到无法登陆的其他情况,具体问题具体对待。
基本上无法登陆情况总结如下:
1.sql服务没有启动
2.TCP/IP没有开启
3.TCP/IP属性,IP地址没有启用

 

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微软SQL Server 2008 R2中的资源分配方式与SQL Server 2005中的方式相比是一种完全不同的过程。利用资源控制器,在SQL Server 2008 R2中解决方案供应商有切实可用的方法管理CPU和内存。   资源消耗是长期以来困扰使用SQL Server的解决方案供应商的基本问题之一。任何服务器,不管它是物理的还是虚拟的,供处置的CPU和内存池都是有限的。过去,这一简单的事实给SQL Server带来许多麻烦,因为它通常是资源非常敏感的应用。   如果服务器上只托管了唯一一个数据库的话,那么SQL Server资源消耗并不是个严重的问题。但是如果有多个数据库在用着,那就真的变成一个问题了,因为各种数据库都会竞争同样一组CPU和内存资源。   在SQL Server 2005中,对这个问题可以接受的解决方案通常是为每个数据库创建独立的SQL Server实例,利用处理器亲和度为每个数据库实例分配资源。这种技术的问题是一旦资源被分配给SQL Server实例,他们对其他SQL Server实例就不可用了。结果,如果一个数据库的负载特别重,它也不可能从其他SQL实例暂借服务器的CPU资源,虽然这个实例上的资源此时可能什么都没做。   一些解决方案供应商也曾尝试利用服务器虚拟化作为给个别SQL Server数据库分配资源的一种途径。在这种模型中,每台虚拟机只托管一个SQL Server数据库。这种方法也可行,但是虚拟机和他们的操作系统也消耗了一些本该用于SQL Server服务器资源。此外,还依赖于你使用的虚拟化软件,以按需分配为基础的资源动态分配可能有些困难或者不可能实现。   微软最终针对SQL Server 2008 R2中的资源分配问题创建了一套可行的解决方案,引入了叫做资源控制器的新组件。这个资源控制器是可以通过微软SQL Server Management Studio访问的,它可以定义资源池,每个资源池都包含负载工作组,如下图所示:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值