1. 问题背景
近期在使用Microsoft SQL Server 2008 R2 数据库时,发现其一直处于状态“已停止” 。经过多次尝试,依然无法启动。下面将分享解决这一问题的过程。
2. 问题定位
2.1 检查错误日志
首先,可以尝试查看SQL Server的错误日志以了解发生了什么。打开SQL Server Management Studio并连接到数据库引擎实例,右键单击实例名称-> 管理-> SQL Server 日志
,在右侧的窗口中可以查看日志信息。
在日志中,可以看到类似以下错误信息:
2019-11-01 11:47:00.77 Server Error: 17051, Severity: 16, State: 1.
2019-11-01 11:47:00.77 Server SQL Server evaluation edition is expired.
...
以上错误信息表明SQL Server版本已过期,需要升级或重新激活。但我的SQL Server版本并未过期,因此需要继续寻找问题。
2.2 查看服务状态
接着,可以查看数据库服务的状态。打开Windows服务列表,找到SQL Server服务,右键单击并选择“属性”。可以看到服务的状态是“已停止”。
尝试启动服务,可以看到以下错误提示:
Windows could not start the SQL Server (MSSQLSERVER) on Local Computer.
For more information, review the System Event Log...
于是,可以从事件日志中查找相关信息。
2.3 查看事件日志
打开Windows事件查看器,跳转到“Windows日志-> 应用程序”下的事件。可以看到来自SQL Server的错误消息。
以下是事件消息的内容:
Log Name: Application
Source: MSSQLSERVER
Date: 10/31/2019 11:14:21 PM
Event ID: 17113
Task Category: Server
Level: Error
Keywords: Classic
User: N/A
Computer: MyComputer
Description:
Could not start the SQL Server (MSSQLSERVER) service on Local Computer.
Error 1069: The service did not start due to a logon failure.
这里显示了一个“日志失败”的错误,这意味着SQL Server服务无法正确登录计算机。 因此,需要检查SQL Server服务的登录设置。
3. 解决问题
3.1 检查登录设置
为了允许服务进行登录,需要使数据库引擎实例使用正确的登录凭据。
打开服务列表,找到SQL Server服务,右键单击并选择“属性”。在“登录”选项卡上,确保使用正确的登录名和密码,这些登录名和密码拥有足够的权限来启动所需的服务。
3.2 重置master数据库的路径
如果登录设置正确,可能是master数据库出现了问题,这是SQL Server启动所需的一个必要组件。
打开命令提示符,以管理员身份运行,并导航到SQL Server实例的数据目录。输入以下命令并按Enter:
cd C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA
接着,使用以下命令更改master数据库的路径:
move master.mdf master.mdf.old
move mastlog.ldf mastlog.ldf.old
这会将master数据库的当前版本重命名为 .old。接着需要恢复默认的主数据库和日志文件。使用以下命令:
copy C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Template Data\master.mdf C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA
copy C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Template Data\mastlog.ldf C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA
3.3 修改注册表
如果master数据库路径的更改无效,则需要尝试修改注册表,解决SQL Server服务无法启动的问题。
打开“运行”窗口,并输入regedit
打开注册表编辑器。然后导航至以下路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
在此路径下,将“MSSQLSERVER”项的值类型从3
更改为1
。这样就可以重置MSSQL服务器并重新启动。
4. 总结
在本文中,我们探讨了SQL Server服务无法启动的原因,并提供了一些解决方案。无论什么原因导致SQL Server服务无法启动,正确的方法将始终在检查服务设置、检查事件日志以及更改服务登录设置等步骤中找到。