总结JDBC连接SQLServer的错误Error establishing socket

来源:互联网 发布:看不见的客人知乎 编辑:程序博客网 时间:2024/05/23 00:05

在用MSSQL连接数据库的过程中,经常会遇见“Error establishing socket.”的错误,大概得错误日志信息如下:

Sql代码
  1. java.sql.SQLException : [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.    
  2.     at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)    
  3.     at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)    
  4.     at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)    
  5.     at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)    
  6.     at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)    
  7.     at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)    
  8.     at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)    
  9.     at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)    
  10.     at java.sql.DriverManager.getConnection( DriverManager.java:523 )    
  11.     at java.sql.DriverManager.getConnection( DriverManager.java:171 )    
  12.     at test.SqlServerTest.main( SqlServerTest.java:29 )   
java.sql.SQLException : [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 


我在网上查询到问题解决的方式有大概如下 种: 
一 配置错误 
jdbc配置语句为: jdbc:microsoft:sqlserver://server_name:1433 
其中的sqlserver、server_name和端口号都要看仔细了。 
二 1433端口问题 
可以通过命令“netstat -an”,来查看是否开了1433端口,如果列表中没有,要增开端口。 
要保持jdbc配置语句( jdbc:microsoft:sqlserver://server_name:1433)中的端口与数据库传输协议默认的端口相同。 
MSSQL设置端口号步骤如下: 
1. 打开企业管理器,依次在控制台根目录 ->Microsoft SQL Servers->SQL Server 组,列出一部分数据库服务器。 
2. 右击我们要连接的数据库服务器,选择属性,在常规选项卡点击网络配置弹出新窗口。 
3. 在启用的协议区域我们选择 TCP/IP ,点击属性按钮,弹出新窗口。在这个窗口有网络协议默认值设置,一般默认端口是:1433。 如果你在url中用的端口号与这个不同,就会出现错误。应保持二者相同。 
三 没打补丁 
可以用如下的方式查看MSSQL的版本: 
打开企业管理器-〉工具-〉SQL查询分析器-〉帮助-〉关于 
查看MSSQL的详细版本号 
如果 是 8.00.194 就是还没打补丁 
8.00.760 就是SP3 
8.00.2039 就是SP4 

1、下载MSSQL 2000 Service Pack 3a并安装,SQL请选用混和安装模式!!! 
http://www.microsoft.com/downloads/details.aspx?FamilyId=90DCD52C-0488-4E46-AFBF-ACACE5369FA3&displaylang=zh-cn 
解压缩sp3的升级包后,还要点击setup安装.才能成功升级到sp3。 
2、下载SQL Server 2000 Driver for JDBC Service Pack 3 
http://www.microsoft.com/downloads/details.aspx?FamilyId=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en 
四 系统防火墙或者杀毒软件 
如果系统开防火墙或者杀毒软件,在有些情况下也可以出现类似的问题。 
没有遇见过,有人这么说。 

补充:关于

sql server 2000 打不上sp4补丁

 我的第一篇原创文章。
    一次,我在xp上装了一个sql server 2000 企业版的,然后打sp4补丁,打过之后,我在其它机器上用sqlserver客户端连,打死也连不上。出问题了,赶紧跑到服务器机,用select @@version,显示8.00.194。用fport,有没程序监听1433。妈的,补丁没打成功。不管打几次都是这样。气死我了,怎么设,也没用。上网查,找到的解决办法都没用。没办法的情况下,我打开c:\sql2ksp4(sql2000-kb884525-sp4-x86-chs.exe解压出来的目录),看看到底里面是什么东西,发现c:\sql2ksp4\x86\binn目录里的文件,和c:\program files\mocrosoft sql server\mssql\binn目录的文件名相同,比较一下,文件的产品版本不一样。c:\program files\mocrosoft sql server\mssql\binn目录里的文件版本都是8.00.194,c:\sql2ksp4\x86\binn目录里的文件版本都是8.00.2039。难道说补丁程序没有覆盖到安装目录? 我就覆盖下试试吧,管他成功不成功。覆盖后,重启机器。客户端再连接,成功。用fport查看,1433端口,已被sqlserver.exe监听。
    结论:sql server sp4补丁,有时安装会不正常,有可能和xp有关,也有可能用360打的安全补丁过多有关,在这种情况下,人工覆盖文件也是个办法。
   微软的这款产品,很流行,不打sp4补丁还不能用,打不上补丁也不报错,竟然还有这么多重大的bug,鄙视一下微软。 6点了,收摊回家。

原创粉丝点击