Java (JDBC) / .NET / 應用程式連線 SQL Server 2005 拋出:
com.microsoft.sqlserver.jdbc.SQLServerException: 到主機的 TCP/IP 連接失敗。 java.net.ConnectException: Connection refused: connect
本機 Management Studio 卻可正常連線 (使用共享記憶體/命名管道)。
SQL Server 2005 **預設停用 TCP/IP 協定**,僅啟用 Shared Memory (本機) 與 Named Pipes。遠端連線必須明確啟用 TCP/IP。
開始 → 所有程式 → Microsoft SQL Server 2005 → 組態工具 → SQL Server Configuration ManagerIPAll 的 TCP 連接埠 設為 1433 (預設)。netsh advfirewall firewall add rule name="SQL Server TCP 1433" dir=in action=allow protocol=TCP localport=1433
netsh advfirewall firewall add rule name="SQL Server Browser UDP 1434" dir=in action=allow protocol=UDP localport=1434
或圖形介面:控制台 → Windows 防火牆 → 例外 → 新增連接埠 1433 (TCP) / 1434 (UDP)。
-- 本機命令列測試
telnet localhost 1433
-- 遠端測試
telnet 1433
成功顯示空白閃爍游標即表示連接埠通暢。
import java.sql.*;
public class TestSqlConn {
public static void main(String[] args) {
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost:1433;databaseName=DataManagement";
String user = "sa"; String pwd = "sa";
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, pwd);
System.out.println("Connection Successful!");
conn.close();
} catch (Exception e) { e.printStackTrace(); }
}
}
com.microsoft.jdbc.sqlserver.SQLServerDriver) → 必須用 com.microsoft.sqlserver.jdbc.SQLServerDriver (sqljdbc.jar)。SQL Server 2005 預設安全強化停用 TCP/IP,是遠端連線失敗的首因。依序啟用協定、重啟服務、開放防火牆 1433/1434,即可恢復正常遠端存取。建議將此納入伺服器標準化部署清單 (Checklist)。