JDBC:SqlServer連接TCP/IP連接失敗,到主機 的 TCP/IP 連接失敗。
報錯信息:com.microsoft.sqlserver.jdbc.SQLServerException: 到主機 的 TCP/IP 連接失敗。 java.net.ConnectException: Connection refused: connect
Exception in thread "main" java.lang.NullPointerException
at test.main(test.java:17)
很多情況下,不能用一種思路理解或解決問題,比如這個到主機 的 TCP/IP 連接失敗的問題
首先分析這個問題產生的原因,大概有5種原因(因為我也遇到了這個問題,所以大概搜集了些解決方案)
常見的問題,第一個,第二個,第五個,這三種是最常見的問題
1)JAVA連接時端口或者看看是否和你java代碼中指定的url中的接口不一致
解決方案:使用JAVA鏈接SQLServer數據庫,檢查語句是否正確尤其為端口號。
2)SqlServer服務未打開或服務未配置正確
解決方案:
2.1)SqlServer服務未打開
打開SQL Server的配置管理器——>點擊SqlServer服務——>選中SqlServer(MSSQLSERVER)右擊啟動【狀態代表目前狀態】【啟動模式代表是開機自啟動還是需要手動啟動】
如下圖
2.2)SqlServer服務未配置正確
解決方案:
exec sys.sp_readerrorlog 0, 1, ‘listening‘
運行後 會顯示你的sql 正在運行的tcp/ip接口
看看是否和你java代碼中指定的url中的接口不一致
3)端口占用
解決方案:
3.1)輸入:netstat -aon|findstr "端口號"
如輸入netstat -aon|findstr "1433",回車,有以下信息顯示TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING 1956
其中"1956"為占用"1433"端口的進程號
3.2)輸入:tasklist|findstr "進程號"
如輸入tasklist|findstr "1956",回車,有以下信息顯示
sqlservr.exe 1956 Console 0 5,556 K
其中"sqlservr.exe"即占用"1433"端口的進程名
4)防火墻攔截
解決方案:關閉防火墻嘗試,如果問題解決在防火墻中添加入站規則
5)TCP/IP服務未打開
解決方案:打開TCP/IP協議(註意事項,請設置完畢後重啟服務)
默認是禁用的如上圖。(右擊該服務啟動)
選中該服務後雙擊,選擇IP地址。翻到最下面IPALL,TCP動態端口默認是隨機配置的設置為1433(如上圖)
最後重啟服務
如果打不開服務請
JDBC:SqlServer連接TCP/IP連接失敗,到主機 的 TCP/IP 連接失敗。