今天遇到一个客户说sqlserver的服务启动不了报错,因为之前是我给他搭建的环境所以我认为问题应该不大,可能都是他的操作问题或者端口占用什么的,但是我打开事件查看器发现有这么几条错误:
由于安全库有问题,服务器无法初始化加密。可能是缺失安全库。请验证系统上是否存在 security.dll。
TDSSNIClient 初始化失败,出现错误 0x139f,状态代码 0x80。原因: 无法初始化 SSL 支持。 组或资源的状态不是执行请求操作的正确状态。
TDSSNIClient 初始化失败,出现错误 0x139f,状态代码 0x1。原因: 初始化失败,出现基础结构错误。请检查以前的错误。 组或资源的状态不是执行请求操作的正确状态。
由于网络库中存在内部错误,所以无法启动网络库。要确定原因,请查看错误日志中紧位于此错误之前的那些错误。
SQL Server 无法生成 FRunCM 线程。请查看 SQL Server 错误日志和 Windows 事件日志,获取有关可能发生的相关问题的信息。
之前没有遇到过啊,百度一下发现答案各种各样(其实就是不靠谱的居多,大多数都是copy别人的),然后我发现报错里面有提到SSL其他有人也提到过tls1.2的事,那我就下一个IIS Crypto,这里提一下这个工具设置证书的protocol很有用
下载到服务器上打开一看只开启了tls1.2,那我预计问题就出在这里了,然后查找到https://learn.microsoft.com/zh-TW/troubleshoot/sql/database-engine/connect/tls-1-2-support-microsoft-sql-server,发现我们的2008版本需要打补丁才能支持tls1.2,后面的事情就简单了,下载补丁打上,服务顺利启动。