启用加密后,事件 ID 33566 和 SQL Server 不会启动

适用范围:SQL Server

现象

在Microsoft SQL Server 配置管理器中,预配服务器端证书并启用加密。 但是,SQL Server 服务不会启动,你会收到以下错误消息:

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

解决方法

  1. 检查应用程序日志并验证是否看到两个类似于以下内容的事件条目:

    Log Name:      Application  
    Source:        MSSQLSERVER  
    Date:          <Datetime>
    Event ID:      33556  
    Task Category: Server  
    Level:         Error  
    Keywords:      Classic  
    User:          N/A  
    Computer:      <Server name> 
    Description:  
    Invalid character in the thumbprint [Cert Hash(sha1) " \<Cert Hash number"].
    Please provide a certificate with a valid thumbprint.
    

    注意

    此错误通常表示未通过 Configuration Manager 预配证书。 它通过手动将指纹值复制到以下注册表项进行预配:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Certificate

    如果将无效字符复制到注册表值,则会发生此错误。

  2. 若要解决此问题,请使用以下任一方法。

    方法 1:使用SQL Server 配置管理器预配证书

    1. 从以下注册表子项中手动删除指纹值:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Certificate

    2. 使用 Configuration Manager 重新预配证书。

    3. 重新启动 SQL Server 服务。

    方法 2:修复指纹值中的无效字符

    1. 选择“开始>运行”,输入 mmc,然后在 MMC 控制台中打开证书管理单元。

    2. 右键单击证书,并将指纹值复制到文本文件中。 请确保指纹值前后不存在空格。

    3. 从以下注册表子项中手动删除指纹值:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Certificate

    4. 手动粘贴新值,或重新键入从文本文件获取的值。

    5. 重新启动 SQL Server 服务。