首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

JDBC 連接 SQL Server 「Error establishing socket」 根因總結與排查清單

     編輯:關於SqlServer

錯誤堆疊特徵


java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
    at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
    at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
    ...
    at test.SqlServerTest.main(SqlServerTest.java:29)

四大主因與對策

1. JDBC URL 參數錯誤

  • 格式:jdbc:microsoft:sqlserver://host:port (2000 驅動) / jdbc:sqlserver://host:port (2005+)。
  • 檢查:主機名/IP、實例名、埠號 (預設 1433) 是否與伺服器實際監聽一致。

2. 1433 埠未開放 / 衝突

  • netstat -an | findstr 1433 確認 LISTENING。
  • 若無:SQL Server Configuration Manager → TCP/IP 啟用 → IPAll 埠設 1433 (清空動態埠) → 重啟服務。
  • 若被佔用:修改 SQL 監聽埠並同步更新 JDBC URL。

3. SQL Server 2000 未打補丁 (高機率)

  • 版本確認:企業管理器 → 說明 → 關於
    8.00.194 = RTM (無補丁)
    8.00.760 = SP3
    8.00.2039 = SP4
  • **必裝**:
    ① SQL Server 2000 SP3a/SP4 (混合驗證模式安裝)
    ② SQL Server 2000 Driver for JDBC SP3
    下載連結見原文。
  • 安裝注意:SP4 為解壓縮包,需進入目錄執行 setup.bat。

4. 防火牆 / 杀毒軟體攔截

  • Windows 防火牆輸入規則開放 TCP 1433。
  • 第三方安全軟體 (McAfee, Symantec, 360 等) 加白名單或暫停測試。

特殊情況:Tomcat 埠衝突導致誤判

若 netstat 顯示 Tomcat 埠 (8080/8443) 異常,嘗試:

  1. %TOMCAT_HOME%\bin\shutdown.bat 關閉 Tomcat。
  2. 重新啟動 Tomcat,或修改 server.xml 埠號。
  3. 環境變數 JAVA_HOME, CATALINA_HOME 確認正確。

快速驗證腳本


// 獨立測試類
public class JdbcTest {
    public static void main(String[] args) {
        String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=test";
        try {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            Connection c = DriverManager.getConnection(url, "sa", "pwd");
            System.out.println("OK: " + c.getMetaData().getDatabaseProductVersion());
            c.close();
        } catch (Exception e) { e.printStackTrace(); }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved