尝试通过远程计算机连接到DB时,SQL Server连接被拒绝

Ngu*_*iếu 3 java sql-server jdbc localhost remote-server

我是编程的新手,我正在使用登录屏幕创建这个聊天服务器,从SQL服务器中提取数据.在我的笔记本电脑(数据库所在的地方)进行测试时似乎很好.但是当我试图在另一个桌面上运行代码时,

它一直说:

"与主机localhost的TCP/IP连接,端口2175失败了......"

到目前为止我尝试过这样做:

  • 启用TCP/IP协议
  • 将端口设置为1433
  • 将动态端口设置为2175
  • 运行SQL浏览器(在内置帐户部分设置"本地服务")
  • 重新启动SQL Server(在内置帐户部分设置"网络服务")
  • 创建一堆TCP端口规则(入站和出站 - 允许所有)
  • 创建sqlserver程序规则(入站和出站 - 允许所有)
  • 在防火墙例外中添加sqlserver

但它似乎没有任何影响.

这是我连接到SQLserver的代码:

public boolean connect(String SQL) {
    String connectionUrl = "jdbc:sqlserver://localhost:2175;" +  
     "databaseName=TestConnection;integratedSecurity=True;";
    Connection con = null;
    Statement stm = null;
    ResultSet rs = null;
    boolean check = false;
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(connectionUrl);
        stm = con.createStatement();
        if (SQL.contains("update") || SQL.contains("insert") || SQL.contains("delete") || SQL.contains("UPDATE") || SQL.contains("INSERT") || SQL.contains("DELETE")) {
            int clu = stm.executeUpdate(SQL);
            if (clu == 0)
                check = false;
            else
                check = true;
        }
        else {
            rs = stm.executeQuery(SQL);
            while (rs.next()) {
                System.out.println(rs.getString(1) + " | " + rs.getString(2));
                check = true;
            }
        }
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    } finally {  
        if (rs != null) try { rs.close(); } catch(Exception e) {}  
        if (stm != null) try { stm.close(); } catch(Exception e) {}  
        if (con != null) try { con.close(); } catch(Exception e) {}  
    }

    return check;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用SQL Server 2016.我知道有很多主题讨论这个问题,但我似乎无法找到解决方案.

我还需要提一下:桌面我试图运行我的代码没有安装SQL服务器.它需要吗?

Rav*_*avi 5

String connectionUrl = "jdbc:sqlserver://localhost:2175;" +  
    "databaseName=TestConnection;integratedSecurity=True;";
Run Code Online (Sandbox Code Playgroud)

上面的代码意味着,您正在尝试连接到安装在同一台机器上的数据库(即localhost).

现在,如果您尝试连接到远程服务器,则需要使用其IP地址.此外,您需要确保它们位于同一网络中(尝试使用其IP地址ping该计算机).