【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

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) ”這個錯誤。