为什么com.microsoft.jdbc.sqlserver.SQLServerDriver不能成功连接数据库,而用sun.jdbc.odbc.JdbcOdbcDriver却没有问题?
谢谢 解答。

解决方案 »

  1.   

    没找到驱动?
    sqlsvr没打补丁?
      

  2.   

    信息太少,把出錯信息或者異常信息貼點出來,還有用的sqlserver驅動是2000或者2005連接用的語句也是不一樣的,具體點吧
      

  3.   

    云中月 说:
    不可能吧
    [email protected] 说:
    你用的什么驱动?
    [email protected] 说:
    现状的确如此
    [email protected] 说:
    jdbc驱动,3个jar文件的e
    云中月 说:
    仔细检查代码
    [email protected] 说:
    一直好好的,今天程序突然都连不上数据库
    [email protected] 说:
    开始以为,数据库在重启,后来,才发现数据库是开着的,分析后,发现都是使用jdbc的不能连上。odbc都没问题。
    云中月 说:
    检查一下环境的变化吧
    [email protected] 说:
    程序都是在分散在各客户机上运行,数据库远程
    [email protected] 说:
    connection.url是什么
    云中月 说:
    连接字
    [email protected] 说:
    晕,我问xici他这个属性是怎么配的
    [email protected] 说:
    jdbc:microsoft: sqlserver://remoteserver:1433;DatabaseName=database
    [email protected] 说:
    这个应该不会有问题的
    云中月 说:
    会.
    云中月 说:
    如果数据库上端口给封闭了,
    [email protected] 说:
    如果说服务器的环境变了,引起不能连接,那会是什么环境的变化会引起这个问题呢
    [email protected] 说:

    [email protected] 说:
    除了这个可能的原因呢
    [email protected] 说:
    你用的是2000的数据库还是2005
    [email protected] 说:
    2000
    云中月 说:
    中毒后导致端口被占用.
    云中月 说:
    反正就是连接上的问题.
    检查端口
    [email protected] 说:
    难道只可能是端口的问题吗
    [email protected] 说:
    晕,看你也没配错,应该是云中月说的那些问题了
    云中月 说:
    程序没人改.
    前天是好的,今天就不行了,
    就查系统环境.
    云中月 说:
    jdbc和环境唯一的关联就是地址和端口.
    [email protected] 说:
    那如何检查该端口的状态呢
    云中月 说:
    telnet  ip port
    [email protected] 说:
    远程连接,会不会是DNS的问题,防火墙的问题
    [email protected] 说:
    这个方法不可行的
    [email protected] 说:
    因为我曾经在链接正常的情况下,telnet ip port过,返回的是失败
    云中月 说:
    一般这个方法都是可行的
    [email protected] 说:
    telnet被禁掉了
    云中月 说:
    那就去机器上看端口状况了.
    [email protected] 说:
    dns只是路由择路,应该没问题。
    云中月 说:
    netstat  -s
    [email protected] 说:
    我的意思是可能你数据库服务器端的dns出问题了,解析不到remoteserver
    [email protected] 说:
    数据库服务器应该是local了
    [email protected] 说:
    本地~~~会不会数据库挂了,或者端口变了
    [email protected] 说:
    我先去检查端口的问题,估计没人会乱改东西的
      

  4.   

    [email protected] 说:
    你用jdbc还是hibernate啊?总有具体的错误信息吧
    [email protected] 说:
    哎,错误信息没看头的。就是一句 普通得不能再普通的
    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:140)
    at org.logicalcobwebs.proxool.DefaultConnectionBuilder.buildConnection(DefaultConnectionBuilder.java:39)
    at org.logicalcobwebs.proxool.Prototyper.buildConnection(Prototyper.java:159)
    at org.logicalcobwebs.proxool.ConnectionPool.getConnection(ConnectionPool.java:217)
    at org.logicalcobwebs.proxool.ProxoolDriver.connect(ProxoolDriver.java:89)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:193)
    at factory.db.DatabaseFactory.getConnect(DatabaseFactory.java:84)
    at com.asb.ccc.effort.client.DataTransfer.<init>(DataTransfer.java:35)
      

  5.   

    sp3 or sp4,可是,当前的sql server 2000已经是sp4了