JDBC 连接失败,错误:与主机的 TCP/IP 连接失败

Posted

技术标签:

【中文标题】JDBC 连接失败,错误:与主机的 TCP/IP 连接失败【英文标题】:JDBC connection failed, error: TCP/IP connection to host failed 【发布时间】:2013-09-21 09:55:02 【问题描述】:

我想将 Java 类文件与 SQL Server 2012 连接。我已使用 SQL Server 身份验证登录,但连接时收到错误消息。

错误:

与主机 127.0.0.1、端口 1433 的 TCP/IP 连接失败。 错误:“连接被拒绝:连接。验证连接属性。 确保 SQL Server 实例正在主机上运行,​​并且 在端口接受 TCP/IP 连接。确保 TCP 与端口的连接不会被防火墙阻止。”。

我的代码:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  //1. Register your driver
//2. get the connection object
//Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=aysha","sa","admin");
Connection con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;databaseName=aysha","user=sa","password=admin");
 //"jdbc:sqlserver://127.0.0.1:1433; Instance=SQL2008;" +       "databaseName=MB;user=sa;password=123;";
//Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=aysha","sa" , "password");
//3. Prepare a statement
Statement stmt = con.createStatement();
//4. Write the query`
String sql = "Select * from employee";
//5. Execute the statement and 
ResultSet rs = stmt.executeQuery(sql);
//6. Process the result set

while (rs.next())

    System.out.println(rs.getInt(1));

【问题讨论】:

本地计算机拒绝让您连接到端口 1433。这可能是防火墙问题。还要确保端口上有实际监听的东西 【参考方案1】:
    打开 SQL Server 配置管理器,然后展开 SQL Server 2012 网络配置。 单击 InstanceName 的协议,然后确保在右侧面板中启用 TCP/IP,然后双击 TCP/IP。 在 Protocol 选项卡上,注意 Listen All 项的值。 单击 IP 地址选项卡: 如果 Listen All 的值为 yes,则此 SQL Server 2012 实例的 TCP/IP 端口号是 IPAll 下 TCP Dynamic Ports 项的值。 如果 Listen All 的值为 no,则此 SQL Server 2012 实例的 TCP/IP 端口号是特定 IP 地址的 TCP 动态端口项的值。 确保 TCP 端口为 1433。 点击确定。

【讨论】:

并且不要忘记在进行更改后重新启动您的 SQL 实例。 重启你的SQL实例如下:在“SQL Server配置管理器”->“SQL Server 2012服务”右击“SQL Server”并选择“重启”。 注意确保IPAII下的TCP端口为1433 或者把你应用中的端口号改成IPAII下TCP动态端口的值。这就是我为使其正常工作所做的工作,因为我无法更改该值。 还要确保启用了 sql server 身份验证:转到所选服务器的属性(从右键菜单中)。现在转到安全页面并在服务器身份验证下选择 SQL Server 和窗口身份验证模式选项。现在展开 Security > Logins 并右键单击服务器名称,然后选择 Properties。 ...单击确定并重新启动 SQL 服务器 (nucleustechnologies.com/blog/…)【参考方案2】:

简单的解决方案

开始->所有程序->Microsoft SQL Server 2012->配置工具->点击SQL Server配置管理器->展开SQL Server网络配置->协议->启用TCP/IP右键框

双击 TCP/IP 并转到 IP 地址 点击并将端口 1433 放在 TCP 端口下。

【讨论】:

执行这些步骤后,我必须停止并重新启动服务器才能使其正常工作。谢谢!【参考方案3】:

错误是不言自明的:

检查您的 SQL 服务器是否真正启动并运行 检查 SQL server 主机名、用户名和密码是否正确 检查没有防火墙规则阻止 TCP 连接到端口 1433 检查主机是否实际可达

我经常使用的一个很好的检查是使用 telnet,例如在 windows 命令提示符下运行:

telnet 127.0.0.1 1433

如果你得到一个空白屏幕,则表明网络连接建立成功,这不是网络问题。如果您收到“无法打开与主机的连接”,则这是网络问题

【讨论】:

我试过 telnet 127.0.01 1433 ,它说 Connecting to 127.0.01`could not open connection to the host or port 1433 connection failed 因此很可能您还没有安装服务器,服务器没有运行,或者您的防火墙阻止了连接。这通常不是 java 程序问题【参考方案4】:

进入开始->所有程序->Microsoft SQL Server 2012->配置工具->点击SQL Server配置管理器。

如果您看到 SQL Server/SQL Server Browser 状态为“停止”。右键单击 SQL Server/SQL Server Browser 并单击开始。 在某些情况下,虽然分配了与端口 1433 的 TCP 连接,但上述状态可能会停止。

【讨论】:

帮了我很多。浏览器被禁用,这是建立客户端连接必须运行的关键组件。【参考方案5】:

打开 %windir%\System32 文件夹,找到 SQLServerManagerXX.msc

例如:

C:\Windows\System32\SQLServerManager14.msc

转到协议设置,然后启用 TCP/IP 端口默认为 1433

【讨论】:

在我的情况下,tcp/ip 状态被禁用。我更改了它并设置了端口 1433。【参考方案6】:

正如错误所说,您需要确保您的 sql server 正在运行并在端口 1433 上侦听。如果服务器正在运行,那么您需要检查是否有防火墙规则拒绝端口 1433 上的连接。

以下是对故障排除有用的命令:

    使用netstat -a检查sql server是否在监听所需端口 正如回答中提到的gerrytan,您可以尝试在主机和端口上执行telnet

【讨论】:

我认为 OP 使用的是 sql server 而不是 mysql @AyshaNijhawan 你检查过它正在监听的端口吗?也尝试通过命令提示符或使用相同 ip/port 和凭据的 sql 客户端连接到 sql server。 端口为 1433,我尝试将其放入连接字符串中。 SQL server N/W config -> Protocols for MSSQLSERVER 中启用了命名管道、内存和 TCP/IP【参考方案7】:

重要: 在进行任何更改或新设置后,您必须重新启动 SQLSERVER 服务。在Windows上运行services.msc

【讨论】:

【参考方案8】:

如果您使用的是命名实例,您使用的端口可能是 1434,而不是 1433,因此请也使用上述 telnet 或 netstat 进行检查。

【讨论】:

【参考方案9】:

打开防火墙GUI,打开TCP 1433规则,进入范围选项卡,在远程IP地址下添加你的IP地址,问题就解决了。

【讨论】:

重复this answer

以上是关于JDBC 连接失败,错误:与主机的 TCP/IP 连接失败的主要内容,如果未能解决你的问题,请参考以下文章

JDBC 通过端口 1433 连接到主机 localshost 的 TCP/IP 连接失败。错误:“null。

与主机 localhost、端口 1433 的 TCP/IP 连接失败

Java JDBC连接SQL Server2005错误:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败

通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“connect timed out。请验证连接属性,并

SQLServer异常;与主机 localhost、端口 1433 的 TCP/IP 连接失败

com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。