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_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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM