SQL 服务器版本:
选择@@版本; /* 微软 SQL Server 2012 - 11.0.2100.60 (X64) Windows NT 6.1(内部版本 7601:Service Pack 1)上的开发人员版(64 位) */
问题:
所以,我在玩最大内存,我不小心将最大内存设置为 128MB,现在,我无法打开与 SQL Server 的连接。当我试图打开一个会话并修复错误时,我得到了这个美妙的弹出窗口。
为了自救,我决定在 SQL Server 中添加 -f 参数,并反弹服务。
在此处查看更多信息:
和这里:
重新启动服务后,我再次尝试连接。我收到以下消息:
根据我掌握的关于 -f 标志的信息,这是预料之中的。然后,我能够使用专用管理员连接 (DAC) 打开连接。然后我能够运行 sp_configure 并更改最大内存设置。这是我在进行更改之前在 sp_configure 中看到的内容。运行值似乎又是无穷大(或足够接近)。
我运行此更新以将最大内存增加到 3GB:
使用大师; 去 sp_configure '最大服务器内存 (MB)' , 3072; 去 重新配置; 去
然后我删除了 -f 参数并重新启动了 SQL Server。那时,服务器可以在多用户模式下访问,我的最大内存值等于 3GB。这不是我遇到过的最优雅的解决方案;但是,唉,它奏效了;所以我决定在这里分享。
有人有更快更清洁的解决方案吗?
我能够通过建立 DAC 连接来重置内存,而无需使用
-f
启动参数。但是,我必须坚持:如果您发现在您的情况下您也遇到了这种“糟糕,SQL Server 不再运行”的症状,您可能会附加一个调试器并确定 SQL Server 是如何关闭的。
那么,你能做到
-f
吗?是的。有没有更清洁的?只有当你真的很幸运。如果您的数据库很大,您更有可能希望有可预测的重启次数 (2),因为恢复过程可能比我的要复杂得多当然,更干净的事情是不要使用 GUI 或容易出错的临时脚本来处理最大服务器内存 - 在生产中,您希望使用第二组眼睛并拥有适当的、经过验证的、源代码控制的脚本比“玩弄”更可预测。:-)