如果禁用所有协议,则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