ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

sql server启动报错 TDSSNIClient 初始化失败,出现错误 0xffffffff,状态代码 0x80。原因: Unable to initialize SSL support.

2021-06-27 01:02:13  阅读:66  来源: 互联网

标签:TLS HKEY Server MACHINE 0x80 SQL 报错 server LOCAL


【1】问题

【1.1】sql server启动报错

  TDSSNIClient 初始化失败,出现错误 0xffffffff,状态代码 0x80。原因: Unable to initialize SSL support.

  SQL Server 无法生成 FRunCommunicationsManager 线程。请查看 SQL Server 错误日志和操作系统错误日志,获取有关可能发生的相关问题的信息。

类似报错:
TDSSNIClient初始化失败,错误0x80092004,状态代码0x80。原因:无法初始化SSL支持。
TDSSNIClient初始化失败,错误0x80092004,状态代码0x1。原因:初始化因基础结构错误而失败。
由于网络库中的内部错误,无法启动网络库。
SQL Server无法生成FRunCommunicationsManager线程。检查SQL Server错误日志和Windows事件日志,以获取有关可能的相关问题的信息。

 

【1.2】尝试

(1)关闭掉sql server 的 tcp/ip之后,可以用 share memory 连接

(2)以为是端口占用,换了很多其他端口,依然同样的报错;且 netstat -ano 中并未看到占用 1433 或指定端口

(3)用了【2.1】办法,SSCM中没有看到 VIA 选项,但注册表中是早已关闭的

(4)用了【2.2】办法,依然没用

【2】解决思路

(思路1)关掉VIA

【Microsoft SQL Server 2005】--【配置工具】--【SQL Server Configration Manager】 打开配置管理器窗口,左侧树形中找到“SQL Server 2005 网络配置”--“MSSQLSERVER的协议”,右侧的VIA协议为启用,改成禁用即可。   

 

HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\Tcp

如果发现这里没有VIA选项,查看注册表;

(思路2)是否确定开启了SSL服务? 

检查sql server configuration manager.

疑问:

  TDSSNIClient 初始化失败,出现错误 0x80092004,状态代码 0x1。

     原因: Initialization failed with an infrastructure error. Check for previous errors. Cannot find object or property. 

   TDSSNIClient 初始化失败,出现错误 0x80092004,状态代码 0x80。

     原因: Unable to initialize SSL support. Cannot find object or property. 

我在网上搜索相应文章,有说禁用via协议,但我在2012环境下,没有找到该协议;

  有说修改注册表的,但是在注册表里也未找到SSL3.0 SSL2.0等项  跪求大神提供思路解决,感激不尽 服务器系统为 windows server 2012

解答:

从您的错误消息中,请确保您已在服务器上启用TLS1.2。请参阅

  如何为Configuration Manager启用TLS 1.2 和 TLS 1.2对Microsoft SQL Server的支持。如果不起作用,请分享详细错误信息以供分析。

  

【TLS】实践操作

本部分转自:SQL server 2012 SP4设置TLS1.2:https://blog.csdn.net/cc93691810/article/details/87921989

(1)在Windows server 2008 R2系统注册表中设置TLS项。参考https://blog.csdn.net/jackbon8/article/details/82702563

第一种方法:手动设置

  1.找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols 然后 右键->新建->项->新建TLS 1.2

  2.在文件TLS 1.2中右键->新建->项->新建Server, Client

  3.在新建的Server和Client中都新建如下的项(DWORD 32位值)

DisabledByDefault [Value = 0]
Enabled [Value = 1]

第二种方法:写reg文件设置

或者使用

1.新建文本文件,将一下代码复制进去,后缀改为reg,双击导入

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client] “DisabledByDefault”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client] “DisabledByDefault”=dword:00000000 “Enable”=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server] “DisabledByDefault”=dword:00000000 “Enable”=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] “DisabledByDefault”=dword:00000000 “Enable”=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] “DisabledByDefault “=dword:00000000 “Enable”=dword:00000001

 

2.禁用老SSL配置

打开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client 配置如下
DisabledByDefault [Value = 0]
Enabled [Value = 0]

第三种方法:使用IISCrypto软件设置

  

 

 最后: https://www.ssllabs.com/ssltest/index.html 可以通过这个网页检测网站是否支持TLS1.2

( 思路3)证书权限问题(没使用证书请忽略)

看上面的1、2两个错误后面的原因都是英文,其实以上就是找不到啥啥啥,由于sql server 开启强制协议加密,还能是啥啥啥,肯定是证书喽,那我们启用了,为啥还是找不到呢?可能的原因包括以下三种:

1、该证书可能已被移动或删除。

2、如果由 SQL Server 使用的登录名已发生更改,则 SQL Server 可能无权访问该证书。

3、该证书可能已过期。

按照思路走,以上三点肯定都不是,给予大脑皮层的又一反应,权限;那估计就是权限闹的,是根据2的启发来的,原因就是 SQL Server 可能无权访问该证书,这个是运行sql server实例的用户对证书的访问权限,我们现在操作一下权限;

具体操作如下:

需要在证书管理下,个人-证书,选择证书,右键所有任务-管理私钥。选择添加上运行sql server实例的用户。

PS:有的SQL SERVER是独立的用户运行,选择即可,如果自己没有设置过,直接给 Everyone 权限即可 选择 完全控制以及读取两个勾-具体看下图;

  

延伸阅读:

重启sql server实例一直失败,也可能直接提示“无法加载用户指定的证书 [Cert Hash(sha1) ”这个错误。

【结论】均没有解决问题

【参考文档】

同样的疑惑帖子:https://bbs.csdn.net/topics/330243569

标签:TLS,HKEY,Server,MACHINE,0x80,SQL,报错,server,LOCAL
来源: https://www.cnblogs.com/gered/p/14939632.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有