老平台迁移过程中出现的MSSQL数据库接连问题

来源:互联网 发布:壮语 泰语 知乎 编辑:程序博客网 时间:2024/04/29 13:55
公司的一较老的平台因为更换服务器要进行迁移,在自己接手后因为该平台不怎么使用就没管过它,但近段时间因为要更换服务器,需要把该服务迁移到新服务器上去,在迁移的过程中出现了一些问题。
该服务器因搭建较早,使用的是 win2003server,msserver2000的数据库,WEB服务器用的是resin2.1.13,新的服务器装的是win2008server,mserver2005,WEB服务器使用TOMCAT7,在数据库迁移过程中很顺利,没有发现什么问题,但发现启动了WEB之后没法访问,后来确定是WEB中的类对新的一些特性不支持。

没办法只能换成和原来resin版本一样的,配置也是用原来的,只是把web目录的路径改了一下,数据库的连接改了一下,想这样肯定没问题了,于是把WEB开启,页面没问题,登陆也没问题,但有些地方会报数据库连接错误
 
Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知。


在网上搜了一下,有的说是MSSERVER2000到MSSERVER2005升级过程中数据库的JDBC连接有变化,要用新的 数据库连接的JAR包,于是在微软的网官下载了一个:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599

当时还有一个问题比较奇怪,同一个数据库为什么有的地可以连接,有的地不能连接呢,进到程序里查了一下才发现,原来同一个数据库用了两种不同的连接方式,一种JDBC,一种hibernate,怪不得连同一个库,有一个正常,有一个会出问题。

把微软官方的包下载了之后把 sqljdbc.jar文件拷贝到resin的lib目录下,并且把resin的配置文件中的数据库接接部分做了更改

原来:

    <res-ref-name>jdbc/mssql</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <init-param driver-name="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
    <init-param url="jdbc:microsoft:sqlserver://192.168.106.xx:1433;DatabaseName=xxxxxx"/>



更改后:

    <res-type>javax.sql.DataSource</res-type>
    <init-param driver-name="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    <init-param url="jdbc:sqlserver://192.168.106.xx:1433;DatabaseName=xxxxxx"/>


重新启动WEB服务后,还是报错,提示数据库连接错误,查看错误提示,这次的提示比较明显

 

java.lang.UnsupportedOperationException: 此驱动程序不支持 Java Runtime Environment (JRE) 1.6 版。请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库。

直接把原来放到resin的lib目录的sqljdbc.jar删除,把微软官方下载包里的  sqljdbc4.jar放到 resin的lib目录下,后新启动 resin服务,WEB访问正常,数据库接接正常。


大功告成,收工!

over,over 


转自:http://www.dba365.net/forum.php?mod=viewthread&tid=63&extra=page%3D1

0 0