SQL Server 服务和SQL Server 代理服务无法在独立服务器上启动

本文可帮助你解决 SQL Server 服务和SQL Server 代理服务可能无法在独立服务器上启动的问题。

原始产品版本:SQL Server
原始 KB 数: 307288

现象

  • 问题 1: 在独立服务器上,MSSQLSERVER 服务可能无法启动,并收到以下错误消息:

    An error 1068 - (The dependency service or group failed to start.) occurred while performing this service operation on the MSSQLServer Service.
    
  • 问题 2: 同样,SQLServerAgent 服务也可能无法启动,并且收到以下错误消息:

    An error 1068 - (The dependency service or group failed to start.) occurred while performing this service operation on the SQLServerAgent Service.
    

    如果满足以下两个条件,则会出现问题 1问题 2

    • 服务器计算机位于工作组中,而不是域的一部分。
    • MSSQLSERVER 和 SQLServerAgent 服务都设置为使用域帐户进行启动。
  • 问题 3:在域成员服务器上,MSSQLSERVER 服务可能无法在服务器启动期间启动,并且会在事件 ID 为 7038 的事件查看器收到以下消息:

    The MSSQLSERVER service was unable to log on as domain\mssqlsvc with the currently configured password due to the following error: Source: NetLogon Description: There are currently no logon servers available to service the logon request. The MSSQLSERVER service terminated unexpectedly.
    

    如果满足以下所有条件,则会出现此问题:

    • 服务器是域的一部分。
    • MSSQLSERVER 和 SQLServerAgent 服务都设置为使用域帐户进行启动。
    • MSSQLSERVER 和 SQLServerAgent 的启动模式设置为 “自动”。

原因

出现问题 1问题 2 ,因为服务器是独立计算机,NetLogon 服务不会在服务器上启动。 因此,无法进行域范围的登录身份验证。

出现问题 3 是因为 SQL Server 服务尝试在 NetLogon 服务启动之前启动。

解决方法

  • 若要修复 问题 1问题 2,请执行以下步骤:

    1. 将 MSSQLSERVER 和 SQLServerAgent 的启动帐户更改为使用本地系统帐户。
    2. 重新启动服务器。

    备注

    在独立计算机上,应为手动启动设置 NetLogon 服务。

  • 若要修复 问题 3,请使用以下解决方法:

    • 将 SQL Server 启动配置为 特定 Windows 服务器的延迟启动 。 其他 Windows 服务(如 NetLogon)首先完成,SQL Server 将启动且不会出现问题。

    • 配置 SQL Server 启动以 重试。 可以在第二次启动尝试时完成启动。

    • 将服务器上的所有网络接口的重复地址检测 (-DadTransmits) 值更改为 1 。 有关详细信息,请参阅命令 Set-NetIPInterface

    • 更改 SQL Server 和 SQL Server 代理 服务的恢复选项。 指定 “重启服务 ”作为失败选项的操作。 你可以使用熟悉的“服务控制管理器”界面从“管理工具”的“服务”小程序执行此选项。

    如果延迟启动选项无法修复问题 3,请将以下依赖项添加到 SQL Server 服务:

    • Ip 帮助程序服务
    • 服务器服务
    • 网络列表服务

    可以使用以下命令添加依赖项。 以下示例假定默认的 SQL Server 实例 MSSQLSERVER。 对于命名实例,请使用 MSSQL$INSTANCENAME

    sc.exe qc MSSQLSERVER ::view dependencies
    sc.exe config MSSQLSERVER depend=iphlpsvc/LanmanServer/netprofm
    sc.exe qc MSSQLSERVER ::view dependencies
    

    第一个和第三个命令显示更改前后的依赖项。