几乎每次我重新启动托管 SQL Server 2008 R2 Express 服务器的计算机时,数据库都会经历恢复过程。大多数情况下,数据库会卡在恢复过程中。
在 Windows 事件日志中发现此错误:The SQL Server (__NAMEHERE__) service terminated unexpectedly. It has done this 1 time(s).
在 SQL 日志中发现了这一点:
2011-12-09 10:12:51.16 Server SQL Server is terminating because of a system shutdown. This is an informational message only. No user action is required. 2011-12-09 10:13:18.86 spid13s Service Broker manager has shut down. 2011-12-09 10:13:18.86 spid13s Error: 17054, Severity: 16, State: 1. 2011-12-09 10:13:18.86 spid13s The current event was not reported to the Windows Events log. Operating system error = (null). You may need to clear the Windows Events log if it is full.
为什么我不能重新启动系统而数据库又不需要经过恢复,这有什么明显的原因吗?
答案1
你确定这是一个恢复过程吗?当 SQL Server 启动时,所有数据库都会经历一个称为恢复的过程 - 确保所有已提交的事务都正常,而未提交的事务将被回滚。(当数据库恢复时,它也会经历恢复)
这些日志只是告诉我 SQL Server 的服务由于系统关闭(重启?)而停止。手动启动 SQL Server 服务时会发生什么?它是在域 Windows 帐户下运行,还是在本地系统帐户下运行?
答案2
事实证明,问题是由于 Service Broker 的问题导致数据库内部内存不足。重新启动服务后,代理所消耗的所有内存仍在重新加载,并且已达到可用内存的最大值。我不知道内存消耗的原因,但它回答了我在这里遇到的问题。数据库只是用完了 Express 版本中允许的内存。