SQL Server连接被拒绝求助:TCP/IP端口1433连接失败
JDBC连接SQL Server 1433端口被拒绝问题排查
连接代码
public void connect(){ String url = "jdbc:sqlserver://localhost:1433;databaseName=qlsv"; String user = "sa"; String password = "21@MaiChiTam07"; try { connection = DriverManager.getConnection(url, user, password); System.out.println("Connected Successfully!"); } catch (SQLException e) { e.printStackTrace(); } }
抛出的异常
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: no further information. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.". at sqljdbc42/com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191) at sqljdbc42/com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:242) at sqljdbc42/com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2369) at sqljdbc42/com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:551) at sqljdbc42/com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1962) at sqljdbc42/com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1627) at sqljdbc42/com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1458) at sqljdbc42/com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:772) at sqljdbc42/com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:230) at JDBC/DSLopHoc.Database.connect(Database.java:20) at JDBC/DSLopHoc.UILopHoc.<init>(UILopHoc.java:116) at JDBC/DSLopHoc.UILopHoc.lambda$0(UILopHoc.java:192) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
问题描述
已在防火墙设置中允许TCP/IP协议和1433端口通行,但仍出现上述连接拒绝异常,求解决办法。
排查建议
- 确认SQL Server服务是否运行:打开服务管理器(services.msc),找到对应实例的SQL Server服务,确保状态为“正在运行”。默认实例名称通常是
SQL Server (MSSQLSERVER)。 - 检查TCP/IP协议是否启用:打开SQL Server配置管理器,展开“SQL Server网络配置”→对应实例的“协议”,确保TCP/IP状态为“已启用”。
- 验证监听端口:在TCP/IP属性的“IP地址”选项卡中,查看IPAll部分的TCP端口是否为1433。如果是动态端口,需改为固定1433,或在连接URL中指定实际监听端口(可从SQL Server错误日志查看)。
- 测试端口连通性:用
telnet localhost 1433或PowerShell命令Test-NetConnection localhost -Port 1433检查端口是否可正常访问,不通则说明SQL Server未在该端口监听。 - 确认远程连接权限:打开SQL Server Management Studio,右键实例→属性→连接,勾选“允许远程连接到此服务器”。
- 检查sa账户状态:确保sa账户未被禁用,且拥有目标数据库
qlsv的访问权限。 - 核对JDBC驱动版本:确保使用的sqljdbc驱动与SQL Server版本兼容,比如SQL Server 2019建议用sqljdbc8.2及以上版本。
内容的提问来源于stack exchange,提问作者Mai C Tam
相关产品推荐
相关产品推荐

