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


82

我想将Java类文件与SQL Server 2012连接。我已经使用SQL Server身份验证登录。但是我在连接中收到错误。

错误:到主机127.0.0.1的TCP / IP连接,端口1433失败。错误:“连接被拒绝:连接。请验证连接属性。确保主机上正在运行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。这可能是防火墙问题。还要确保端口上确实有监听的
声音

Answers:


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

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

谢谢。


12
并且不要忘记在进行更改后重新启动SQL实例。
JimGoods 2015年

16
重新启动SQL实例,如下所示:在“ SQL Server配置管理器”->“ SQL Server 2012服务”上,右键单击“ SQL Server”,然后选择“重新启动”。
开发人员MariusŽilėnas15年

10
请注意确保IPAII下的TCP端口为1433
开发人员MariusŽilėnas16年

或将应用程序中的端口号更改为IPAII下的TCP动态端口的值。这就是我要做的,因为我无法更改其值。
AlieneilA

111

简单的解决方案

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

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

在此处输入图片说明


2
完成这些步骤后,我必须停止并重新启动服务器才能正常工作。谢谢!
bluefox

15

该错误是不言自明的:

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

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

telnet 127.0.0.1 1433

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


1
我尝试使用telnet 127.0.01 1433,它说连接到127.0.01`无法打开与主机的连接或端口1433连接失败
Aysha Nijhawan 2013年

1
因此,很可能您尚未安装服务器,服务器未运行或者防火墙阻止连接。这通常不是Java程序问题
gerrytan

11

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

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


对我有很大帮助。浏览器已禁用,这是必须运行以建立客户端连接的关键组件。
Mayur

3

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

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

  1. 使用netstat -a检查的SQL Server是否正在监听所需的端口上
  2. 正如格里坦在回答中所述,您可以尝试telnet在主机和端口上执行

我认为OP使用的是sql server,而不是mysql
SpringLearner 2013年

@AyshaNijhawan您检查了正在监听的端口吗?还尝试通过命令提示符或使用相同ip / port和凭据的sql客户端连接到sql服务器。
朱德·阿桑

端口是1433,我尝试通过将其放在连接字符串中来使用。在SQL Server N / W
config-

0

重要提示:
进行任何更改或新设置后,您必须重新启动SQLSERVER服务。运行services.mscWindows


0

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


0

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

例如:

C:\ Windows \ System32 \ SQLServerManager14.msc

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

在此处输入图片说明

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.