如果禁用了所有协议,则 SQL Server 无法启动

适用范围:SQL Server

现象

如果禁用Microsoft SQL Server 实例的所有网络协议,SQL Server 不会启动,并且你会收到以下错误消息,具体取决于尝试启动服务的方式:

  • 通过使用服务小程序:

    Windows 无法在本地计算机上启动 SQL Server (MSSQLSERVER)。 有关详细信息,请查看系统事件日志。
    如果这是非Microsoft服务,请联系服务提供商,并参阅特定于服务的错误代码 13。

  • 使用命令提示符:

    C:\Users\username>NET START MSSQLSERVER
    SQL Server (MSSQLSERVER) 服务正在启动。
    无法启动 SQL Server (MSSQLSERVER) 服务。
    发生服务特定的错误:13。 可以通过键入 NET HELPMSG 3547 获取更多帮助。

解决方法

下面介绍如何解决此问题:

  1. 检查系统事件日志,并验证是否看到以下事件条目:

    Event ID: 7024  
    The SQL Server (MSSQLSERVER) service terminated with the following service-specific error:  
    The data is invalid.  
    
  2. 检查 SQL Server 错误日志,并验证是否看到类似于以下内容的错误消息条目:

    <Datetime> spid9s      Server name is '<ServerName>'. This is an informational message only. No user action is required.  
    <Datetime> spid17s     Error: 17182, Severity: 16, State: 1.  
    <Datetime> spid17s     TDSSNIClient initialization failed with error 0xd, status code 0x4. Reason: **All protocols are disabled. The data is invalid**.  
    <Datetime> spid17s     Error: 17182, Severity: 16, State: 1.  
    <Datetime> spid17s     TDSSNIClient initialization failed with error 0xd, status code 0x1. Reason: Initialization failed with an infrastructure error. Check for previous errors. The data is invalid.  
    .  
    .  
    <Datetime> spid17s     Error: 17826, Severity: 18, State: 3.  
    <Datetime> spid17s     Could not start the network library because of an internal error in the network library. To determine the cause, review the errors immediately preceding this one in the error log.  
    <Datetime> spid17s     Error: 17120, Severity: 16, State: 1.  
    <Datetime> spid17s     SQL Server could not spawn FRunCommunicationsManager thread. Check the SQL Server error log and the operating system error log for information about possible related problems.  
    
  3. 验证“症状”部分中提到的问题后,请使用SQL Server 配置管理器的 SQL Server 网络配置节点启用所需的网络协议。 然后重启 SQL Server 服务。

    注意

    • 如果不想启用与 SQL Server 实例的远程连接,则只能启用共享内存协议,然后重启 SQL Server 服务。

    • 还可以使用以下注册表项来验证网络库设置

      Enabled如果该值设置为零,则禁用相应的网络库。

      • 共享内存: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Sm\Enabled
      • TCP/IP: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp\Enabled
      • 命名管道: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Np\Enabled