启用加密后,事件 ID 33566 和 SQL Server 不会启动
适用范围:SQL Server
现象
在Microsoft SQL Server 配置管理器中,预配服务器端证书并启用加密。 但是,SQL Server 服务不会启动,你会收到以下错误消息:
Windows 无法在本地计算机上启动 SQL Server (MSSQLSERVER)。 有关详细信息,请查看系统事件日志。
如果这是非Microsoft服务,请联系服务提供商,并参阅特定于服务的错误代码 13。
解决方法
检查应用程序日志并验证是否看到两个类似于以下内容的事件条目:
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
如果将无效字符复制到注册表值,则会发生此错误。
若要解决此问题,请使用以下任一方法。
方法 1:使用SQL Server 配置管理器预配证书
从以下注册表子项中手动删除指纹值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Certificate
使用 Configuration Manager 重新预配证书。
重新启动 SQL Server 服务。
方法 2:修复指纹值中的无效字符
选择“开始>运行”,输入 mmc,然后在 MMC 控制台中打开证书管理单元。
右键单击证书,并将指纹值复制到文本文件中。 请确保指纹值前后不存在空格。
从以下注册表子项中手动删除指纹值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Certificate
手动粘贴新值,或重新键入从文本文件获取的值。
重新启动 SQL Server 服务。