1. 程式人生 > >JDBC:SqlServer連接TCP/IP連接失敗,到主機 的 TCP/IP 連接失敗。

JDBC:SqlServer連接TCP/IP連接失敗,到主機 的 TCP/IP 連接失敗。

ros ip協議 嘗試 3.2 main 情況 思路 sta p地址

報錯信息: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 連接失敗。