无法连接到数据库 网络错误 IOException: 连接被拒绝: connect

7
我在我的计算机上运行SQL Server Express 10.50.4000.0。 我已经启用了TCP/IP,并确保端口设置为1433。 我已经在防火墙中添加了一个例外,用于1433端口。 服务器服务正在运行。 我尝试使用localhost和计算机名称,但两者都会出现相同的错误。 当我尝试使用localhost\SQLEXPRESS或[USER-PC]\SQLEXPRESS时,收到一个错误提示说找不到数据库。
String driverName = "net.sourceforge.jtds.jdbc.Driver";
Class.forName(driverName);

String serverName = "localhost";
String instanceName = "ALLEN-PC\\SQLEXPRESS";
String serverPort = "1433";
String database  = serverName +":" + serverPort+"/"+instanceName;
String url = "jdbc:jtds:sqlserver://" + database;
String username = "sa";
String password = "password";

connection = DriverManager.getConnection(url, username, password);

我收到了以下错误信息:

Could not connect to the database Network error IOException: Connection refused: connect

没有额外的上下文可供调查。

数据库的名称是什么?我认为它可能需要包含在连接字符串中:jdbc:jtds:<server_type>://<server>[:<port>][/<database>] - Kevin Bowersox
你尝试过使用 telnet 连接到该端口吗? - chrylis -cautiouslyoptimistic-
Telnet 似乎无法建立连接。 - Allen
SQL Server客户端(或应用程序)和实例是否在您的本地计算机上?如果是,防火墙不应该是问题;否则,如果您无法从客户端telnet到SQL实例,则存在防火墙问题。 - Adam Haines
我也同意Kevin的看法。看起来你没有指定数据库目录。SQL Server实例名称可能是[User-PC]\SQLEXPRESS,因为这是Express的默认设置。然后,您需要告诉它要连接到哪个数据库。 - Adam Haines
我修改了以下代码:String instanceName = "ALLEN-PC\SQLEXPRESS";String database = serverName +":" + serverPort+"/"+instanceName; 但这并没有改变错误。 - Allen
5个回答

14
  1. 确保你的SQL Server Browser服务处于活动状态。
  2. 前往所有程序->SQL Server->配置工具->SQL Server配置管理器->SQL Server网络配置->选择你的服务器实例,右键点击TCP/IP,然后进入IP地址。为所有IP更改/设置端口号为1433。并确保IP地址是活动和启用的。保存并重启服务器。

1
为上述答案添加一个重要步骤。 在“更改/将所有IP的端口号设置为1433”之后,如果“TCP/IP”默认禁用,则手动启用它。然后,重新启动Sql服务器实例并开始使用。编码愉快..干杯 - Bandham Manikanta

6

本地主机的1433端口上没有数据库服务器在监听。

请检查SQL Server浏览器服务是否正在运行。

尝试使用IP地址代替localhost可能会有帮助。


SQL Server Browser目前正在运行,用IP替换本地主机似乎没有改变任何东西。 - Allen

5

1

打开配置管理器: 开始 -> Microsoft SQL Server -> 配置工具 -> SQL Server 配置管理器 启用 TCP/IP:从左侧树形菜单选择: SQL Server 网络配置 -> SQLEXPRESS 协议 -> TCP/IP 右键单击并启用它。 双击 TCP/IP 并单击“IP 地址”选项卡 添加 TCP/IP 端口:输入 TCP 端口值 1433,然后单击应用 重新启动 SQL Server:从左侧树形菜单中选择: SQL Server 服务 -> SQL Server(SQLEXPRESS) -> 右键单击并重新启动。


嗨,Sidharthan,适当的格式化会极大地提高你的答案的可读性和实用性。 - TT.

0
解决方案1: 不要使用jtds驱动程序,而是使用mssql-jdbc-9.4.0.jre8.jar 替换:
Class.forName("net.sourceforge.jtds.jdbc.Driver");
con = DriverManager.getConnection("jdbc:jtds:sqlserver://<IP>:port/<DatabaseName>",userid,password);

使用:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  
DriverManager.getConnection("jdbc:jtds:sqlserver://<IP>:port/<DatabaseName>",userid,password);

解决方案2:
在连接字符串中添加ssl=request参数。
con = DriverManager.getConnection("jdbc:jtds:sqlserver://<IP>:port/<DatabaseName>;ssl=request",userid,password);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接