ICode9

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

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

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

标签: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

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

ICode9版权所有