我一直面临着一个简单的sql连接错误,我厌倦了修复它。我先安装了sql server 2014,然后又安装了sql server 2017,将规则添加到防火墙,甚至关闭了防火墙。服务多次重新启动。 去了配置管理器,启用了所有功能,添加了所需的所有jar,完成了清理和构建,在google中就此问题进行了所有搜索,仍然一次又一次出现相同的问题。使用的系统是 -Windows 10。 -SQL Server Management Studio 2017。 -Netbean 8.1
代码:-
import java.sql.*;
public class DbConnect {
public static void main(String[] args) throws SQLException,ClassNotFoundException {
String url = "jdbc:sqlserver://localhost:1433;databaseName=productlist;user=db2017;password=db2017";
//commented :-String url = "jdbc:sqlserver://DESKTOP-7CI6DU0\\NIT2017:1433;databaseName=productlist;user=db2017;password=db2017";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection conn = DriverManager.getConnection(url);
System.out.println("test");
Statement sta = conn.createStatement();
String Sql = "select * from productlist";
ResultSet rs = sta.executeQuery(Sql);
while (rs.next()) {
System.out.println(rs.getString("CatName"));
} } }
经过大量的故障排除后,下面再次出现异常错误。
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties, check that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:171)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1033)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:233)
at DbConnect.main(DbConnect.java:11)
C:\Users\Nitish\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
放弃之前,曾想在这里检查一下...
答案 0 :(得分:0)
您注释掉的连接字符串表明您正在连接到命名实例。除非另行配置,否则默认的SQL Server实例(未命名)在端口1433上侦听。除非另外配置,否则命名实例使用的动态端口不是1433。每台计算机只能有一个默认实例,每个SQL实例必须在不同的端口上侦听。
您可以使用SQL Server Configuration Manager或查看SQL Server错误日志来确定SQL实例正在侦听的端口。错误日志将包含每个接口和SQL Server正在侦听的端口的消息。该消息将类似于“服务器正在侦听['any'1433]。”。可以使用SSCM更改端口,该端口将在重新启动SQL Service后生效。
要测试端口连接性,可以使用TELNET
:
TELNET YourServer 1433
如果连接成功,您将看到并清空窗口,否则显示错误。
如果未安装TELNET
,则可以从命令提示符窗口中使用此Powershell命令测试端口连接:
powershell -Command echo ((new-object Net.Sockets.TcpClient).Client.Connect('YourServer', 1433)) 'success'
成功连接后,您会看到成功消息,否则会显示套接字异常。
请注意,动态端口是在安装期间分配的,实例将在每次启动时尝试使用相同的端口。但是,请注意,如果该端口在启动时不可用,则端口号可能会更改。可以使用SSCM配置静态端口(包括端口1433),以避免更改命名实例的端口号。