最近,我需要在本机上面运行别人原来做的网站,可是却一直连接不上去,网上有很多说没有打sp4的补丁包,可是服务器打了sp4的补丁啊!可还是抱那个错!我写了一个测试类也是如此,实在搞不懂是什么原因了,希望大家帮帮忙哦!
测试类代码:
public class TestSQLServer 
{
private static Connection conn;
    public static void main(String[] args)
    {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
} catch (InstantiationException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();

String url="jdbc:sqlserver://192.168.0.151:1433;DatabaseName=xzspweb"; 
// mydb为数据库 
String user="xx"; 
String password="xxxxx"; 
try {
conn= DriverManager.getConnection(url,user,password);
System.out.println(conn);
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();

    }
}
报错如下:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:525)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at com.philwong.bean.TestSQLServer.main(TestSQLServer.java:30)

解决方案 »

  1.   

    Error establishing socket. 
    貌似是sp3 或sp4的补丁没有打上。
      

  2.   

    这个是由于端口找不到。
    可能是由于你的sqlserver数据库TCP/IP服务没有打开,因为sqlserver的这个服务好像默认情况下是关闭的,所以这个端口也就关闭了的,你可以在数据库配置里面的服务器配置里面找到这个选项,打开就可以了;还有可能是这个服务已经打开,但是端口不是1433,而是别的什么端口,这个就要你自己慢慢找了。
    给你个找当前打开端口的方法:
    1.命令行输入:netstat -ano  回车后你就能看到所有当前你机器所打开的端口,以及对应进程的PID
    2.在任务管理器中找到sqlserver所对应的PID(这一列任务管理器默认不显示,要手动添加),根据这个PID就可以在第一步中找到sqlserver所打开的端口了
      

  3.   

    1、连接SqlServer2000
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
       URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb";
    2、连接SqlServer2005
       Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
       URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
    比较郁闷的,你仔细看下你的!颠三倒四.呵呵
      

  4.   

    在命令提示符中输入netstat -na 查看1433端口是否被打开。如果没打开则没有安装补丁
      

  5.   

    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 
    注册端口失败,建议考虑下楼上各位的意见,sp4补丁等等情况
      

  6.   

    检查你的SQL有没有打补丁,没有的话要打上补丁,检查的方法是在查询分析器中运行: select @@version如果出来的版本号是8.00.2039以下,则表明你未安装sp4的补丁,要装上. 端口号是要检查一下的哦
      

  7.   

    没有打上补丁
    我以前打的是sp3.就ok的了
      

  8.   

    正确打上SP4补丁,加载JDBC3.0驱动,搞定...
      

  9.   

    1.你打开数据看看你端口是多少。。你是是报端口有问题。。
    2.你的数据库是2000还是2005的,并且连接都不一样,连接如下:
    一、连接SqlServer2000 
      Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
      URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb"; 
    二、连接SqlServer2005 
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
      URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb"; 
    从你上面写的就是连接sql 2000的数据库