繁体   English   中英

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

[英]JDBC connection failed, error: TCP/IP connection to host failed

我想将 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));
}
  1. 打开 SQL Server 配置管理器,然后展开 SQL Server 2012 网络配置。
  2. 单击 InstanceName 的协议,然后确保在右侧面板中启用了 TCP/IP,然后双击 TCP/IP。
  3. 在 Protocol 选项卡上,注意 Listen All 项的值。
  4. 单击“IP 地址”选项卡:如果“全部侦听”的值为“是”,则此 SQL Server 2012 实例的 TCP/IP 端口号就是 IPAll 下的“TCP 动态端口”项的值。 如果 Listen All 的值为 no,则此 SQL Server 2012 实例的 TCP/IP 端口号是特定 IP 地址的 TCP 动态端口项的值。
  5. 确保 TCP 端口为 1433。
  6. 单击确定。

如果还有其他问题,请告诉我。

谢谢。

简单的解决方案

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

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

在此处输入图片说明

错误是不言自明的:

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

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

telnet 127.0.0.1 1433

如果出现黑屏,则表明网络连接已成功建立,这不是网络问题。 如果您收到“无法打开与主机的连接”,则这是网络问题

转到开始->所有程序-> Microsoft SQL Server 2012-> 配置工具-> 单击 SQL Server 配置管理器。 在此处输入图片说明

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

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

以下是可用于故障排除的命令:

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

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

例如:

C:\\Windows\\System32\\SQLServerManager14.msc

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

在此处输入图片说明

在此处输入图片说明

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM