创建与SQL Server的JDBC连接时拒绝权限

时间:2016-09-07 08:43:31

标签: java sql-server jdbc

我有一个连接到SQL Server的代码,该代码段在我的笔记本电脑中完美运行。但是,当我从另一台机器运行相同的代码时,会抛出异常:

com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host <DB>, port 1433 has failed. 
Error: Permission denied: connect. Please verify the connection properties and check that a SQL Server instance is running on the host and accepting TCP/IP connections at the port, and that no firewall is blocking TCP connections to the port.

代码:

public static void main(String ... ar) throws SQLException {
    String connectionUrl = "jdbc:sqlserver://<db>;databaseName=webdatabase;user=<dbuser>;password=<dbpass>";
    Connection conn = DriverManager.getConnection(connectionUrl);
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("<DB Query>");
    System.out.println(rs);
    System.out.println("adsasdasd");
}

2 个答案:

答案 0 :(得分:1)

因此,问题是在运行代码时设置了一个系统属性。

问题是在代码中引入这一行:System.setProperty(&#34; java.net.preferIPv4Stack&#34;,&#34; true&#34;);

或者在VM选项中传递它: -Djava.net.preferIPv4Stack =真

答案 1 :(得分:0)

如果您已将MS SQL服务器配置为侦听TCP / IP流量,则可能是以下任何原因:

  • 防火墙阻止传入连接
  • SQL SERVER未在主机上运行
  • 您配置的端口不正确,即不是1433

如果您已验证问题不属于上述类别,那么您可以尝试执行此操作以启用TCP / IP流量的端口1433

  • 转到开始 - &gt;所有程序 - &gt; Microsoft SQL Server 2008/2012/2014 - &gt;配置工具
  • 单击“SQL Server配置管理器”
  • 展开SQL Server网络配置 - &gt;协议
  • 启用TCP / IP右框
  • 双击TCP / IP并转到IP地址选项卡并在TCP端口下添加1433

希望这有帮助!