问题描述

在运行 SQL Server 服务时,发现服务无法启动。需要查看 SQL Server 联机丛书中的主题“如何查”以获取详细信息。

解决方案

步骤1:查看错误日志

首先,我们需要查看 SQL Server 的错误日志以获取更多关于服务无法启动的详细信息。错误日志通常位于 SQL Server 安装目录的 LOG 文件夹下。请按照以下步骤查看错误日志:

  1. 打开 Windows 文件资源管理器,并导航到 SQL Server 安装目录。
  2. 进入 LOG 文件夹,找到最新的错误日志文件(文件名类似 ERRORLOG)。
  3. 右键单击该文件,选择使用文本编辑器打开。

在错误日志中,您可以查找关键字如 ErrorFailException 等,以了解服务启动失败的原因。您还可以找到错误代码,如 Error: 17113,这将有助于我们进一步的故障排除。

步骤2:检查服务账户权限

服务无法启动的另一个常见原因是服务账户没有足够的权限来执行所需的操作。请按照以下步骤检查服务账户权限:

  1. 打开 服务 窗口。在 Windows 10 上,您可以按下 Win + R 键,然后输入 services.msc 并按下回车键。
  2. 找到 SQL Server 服务(通常命名为 SQL ServerMSSQLSERVER)并右键单击该服务,选择 属性
  3. 在服务属性对话框的 登录 选项卡中,确保选择了一个有效的服务账户。您可以尝试切换到 本地系统账户网络服务账户,然后尝试重新启动服务。

步骤3:检查端口冲突

SQL Server 在启动时需要监听特定的端口来接收客户端请求。如果其他应用程序或服务正在占用 SQL Server 所需的端口,则会导致服务无法启动。请按照以下步骤检查端口冲突:

  1. 打开 SQL Server 配置管理器。在 Windows 10 上,您可以按下 Win + R 键,然后输入 SQLServerManager<版本号> 并按下回车键。
  2. 在 SQL Server 配置管理器中,选择 SQL Server 网络配置,然后选择 TCP/IP
  3. 右键单击 TCP/IP,选择 属性。在 IP 地址 选项卡中,找到 IPAll 节点并查看 TCP 动态端口 的值。这是 SQL Server 正在使用的端口。
  4. 打开命令提示符(使用管理员权限),输入以下命令来查找正在使用该端口的进程:netstat -ano | findstr :<端口号>,将 <端口号> 替换为上一步中找到的端口号。
  5. 结果将显示正在使用该端口的进程 ID。
  6. 打开任务管理器,切换到 详细信息 选项卡,在 PID 列中找到相应的进程 ID。
  7. 如果发现该进程是一个不必要的应用程序或服务,可以尝试终止该进程或更改其使用的端口。

步骤4:重建系统数据库

如果上述步骤都失败了,最后的尝试是重建 SQL Server 的系统数据库。请按照以下步骤执行:

  1. 打开命令提示符(使用管理员权限)。
  2. 输入以下命令来停止 SQL Server 服务:net stop MSSQLSERVER,将 MSSQLSERVER 替换为实际的服务名称。
  3. 切换到 SQL Server 安装目录,找到 Binn 文件夹。
  4. 运行以下命令来重建系统数据库:
cd C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn
sqlservr.exe -sMSSQLSERVER -m"SQLCMD" -T3608

其中,`M