java到sql server连接异常

时间:2011-04-02 04:03:08

标签: java sql-server-2000

我有这个错误/异常 -

SQL异常:com.microsoft.sqlserver.jdbc.SQLServerException:与主机localhost,端口1433的TCP / IP连接失败。错误:“连接超时。验证连接属性,检查主机上是否正在运行SQL Server实例并接受端口上的TCP / IP连接,并且没有防火墙阻止与端口的TCP连接。”。

我的代码是 -

try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String connectionUrl = "jdbc:sqlserver://localhost:1433";
        Connection con = DriverManager.getConnection(connectionUrl,"","");
        System.out.println("ok");
        } catch (SQLException e) {
            System.out.println("SQL Exception: "+ e.toString());
        } 
catch (ClassNotFoundException cE) {
            System.out.println("Class Not Found Exception: "+ cE.toString());
        }

我怎么能解决它,请帮助我。

6 个答案:

答案 0 :(得分:2)

这几乎可能意味着什么 - 基本上,无法连接到localhost上的端口1433。可能是网络问题,可能是数据库未启动,可能是它正在运行但未绑定到端口1433.

在紧要关头,你总是可以打开一个shell并运行

telnet localhost 1433

查看是否可以建立连接。

答案 1 :(得分:1)

我有这个错误。

我通过进入SQL Server配置管理器修复了它。

在SQLEXPRESS的SQL Server 2005 Configuration -> Protocols下。查看IP Address的{​​{1}}的{​​{1}}标签。

在协议列表的最底部(在IPALL下),TCP端口字段为空。我把1433放在那里,保存,重新启动SQL服务,它工作得很好:)

答案 2 :(得分:0)

它告诉你无法连接。

检查该端口上本地计算机上的sql server是否可用。

检查sql server是否接受了您在getConnection()调用中提供的空白名称和密码的连接。

检查您的jdbc网址格式是否正确,有时是制造商/驱动程序特定的。

答案 3 :(得分:0)

错误只是意味着java无法连接到您的数据库。数据库未运行或您的防火墙阻止与它的连接。如果您确定您的数据库服务器已在您的本地主机上运行,​​请在禁用Windows防火墙后尝试。

答案 4 :(得分:0)

让我们看看一些可能性:

  • 数据库服务器没有在localhost上侦听:1433:你可能会收到“拒绝连接”而不是“连接超时”

  • 数据库服务器是紧张性的(即处于不响应请求的状态):您可能会“连接超时”。

  • 数据库服务器严重超载:您可能会“连接超时”,但您可能会注意到计算机速度非常慢。

  • 本地软件防火墙配置为阻止对端口1433的所有请求:您可以获得“连接被拒绝”或“连接超时”...或其他一些响应。 (这完全取决于防火墙对不需要的流量的影响。)

  • 未配置环回接口(针对IP 127.0.0.x):您更有可能获得“无主机路由”或“无网络路由”。

  • localhost的DNS条目配置错误(即localhost无法解析为127.0.0.x) - 可能会发生很多事情......具体取决于配置错误的方式

以下是您可以采取的一些措施来诊断问题......具体取决于您的系统:

  • 使用ipconfigifconfig查看配置的网络。

  • 查看“/ etc / hosts”以查看localhost的条目

  • 尝试使用telnet -p 1433

  • 连接到服务
  • 使用“ps”或任务管理器查看正在运行的进程。

  • 检查本地防火墙配置,确保1433已从配置的localhost IP地址(可能是127.0.0.1)中打开(至少)TCP。

答案 5 :(得分:0)

我遇到了与此类似的问题,并通过添加以下行解决了这个问题:

System.setProperty("java.net.preferIPv4Stack", "true");

问题是它使用IPv6而不是IPv4来访问数据库主机(我将它用于远程主机上的数据库,而不是localhost)。 希望它有所帮助。