![sqlservr.exe 使用 24GB RAM 来访问无法访问的数据库](https://linux22.com/image/733968/sqlservr.exe%20%E4%BD%BF%E7%94%A8%2024GB%20RAM%20%E6%9D%A5%E8%AE%BF%E9%97%AE%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93.png)
运行 SBS 2011 的服务器让我头疼不已。24GB 内存中除了 500MB 以外全部被占用,主要用于 sqlservr.exe。我的第一个想法是修复 SQL 可以使用的内存量。但在 SQL Server Management Studio 中,服务器无法自行连接到数据库。启动 SQL Server 配置管理器时,“无法及时连接到目标计算机”。我感觉自己别无选择,由于内存不足,每个操作都需要几分钟才能处理。
目前尚不清楚这个数据库是否正在我们系统的其他地方使用,因此无法将其关闭。有没有直接的方法来限制内存使用量?潜在的问题可能是身份验证问题,但当窗口需要 5 分钟才能加载时,我无法解决它。提前感谢任何提示
答案1
如果您无法连接 SSMS 或 SQL Server 配置管理器,您将会遇到很多问题。但让我们看看我们可以做些什么来缓解内存压力,以便您可以继续进行故障排除。
您需要以“最小配置”模式启动 SQL Server。如果您无法让 SQL Server 配置管理器工作,则需要执行以下操作之一:
- 修改服务的启动参数
sc.exe
并重新启动服务;或者 - 从服务控制面板停止实例并从命令提示符启动实例
您要添加的参数是-f
。
-F
以最小配置启动 SQL Server 实例。如果配置值的设置(例如,过度使用内存)阻止服务器启动,则此功能非常有用。以最小配置模式启动 SQL Server 会使 SQL Server 处于单用户模式。有关详细信息,请参阅后面的 -m 说明。
根据二进制文件的安装位置,它看起来像这样:
C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\binn\sqlserver.exe -sMSSQLSERVER -f
这将以最低配置启动 SQL,以便您可以着手解决身份验证问题。
注意:任何客户端连接都将中断,因此请在维护期间执行此操作。
答案2
绝对不要终止该sqlserver.exe
进程。这是导致数据库损坏的最佳方式。
您需要重新启动 SQL Server 服务(甚至整个服务器);这应该可以让您摆脱内存不足的情况并允许您执行适当的故障排除和调整。
您可以通过查找服务器上的 TCP 端口 1433 上的开放连接来检查是否有人实际使用数据库:
netstat -nao | find ":1433"
这应该可以让您快速了解谁(如果有的话)正在使用数据库;这将使您至少可以估计停止服务几分钟的影响。
在您能够重新启动服务之前,您无法执行任何操作;不仅因为服务器不可用,而且因为限制内存使用的配置参数只有在服务重新启动后才会生效。