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

    【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_MACHINESoftwareMicrosoftMSSQLServerMSSQLServerSuperSocketNetLibTcp

    如果发现这里没有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_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocols 然后 右键->新建->项->新建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_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocols]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 2.0]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 2.0Client] “DisabledByDefault”=dword:00000000 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Client] “DisabledByDefault”=dword:00000000 “Enable”=dword:00000001 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.1Server] “DisabledByDefault”=dword:00000000 “Enable”=dword:00000001 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2]
    [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Client] “DisabledByDefault”=dword:00000000 “Enable”=dword:00000001 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsTLS 1.2Server] “DisabledByDefault “=dword:00000000 “Enable”=dword:00000001

    2.禁用老SSL配置

    打开 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSecurityProvidersSCHANNELProtocolsSSL 2.0Client 配置如下
    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

  • 相关阅读:
    int是逻辑炸弹吗?
    悲剧
    下班啦
    Android SDK 2.2 开发环境安装
    MVC
    用于主题检测的临时日志(61d47e0cd5874842a9f56a725c1f25f6 3bfe001a32de4114a6b44005b770f6d7)
    ASP.NET读取XML文件
    asp.net执行顺序
    理解POCO
    乐观中谨慎 招聘调薪现"贫富差距"
  • 原文地址:https://www.cnblogs.com/gered/p/14939632.html
Copyright © 2011-2022 走看看