我有一台使用Windows server 2003 SP2和使用Java SE 5.0开发的第三方应用程序的服务器。该应用程序通过配置ODBC源连接到外部数据库服务器。在我的ODBC源中,我已将源配置为外部MS SQL服务器。我可以说它使用这个驱动程序:SQLSRV32.DLL版本:2000.86.3959.00。当我配置这个源并测试连接时,它说连接成功。
多年的外部数据库服务器在MS SQL server 2008下运行,一切正常。但是现在他们迁移到MS SQL Server 2012,我的java应用程序失去了连接,例外如下:
[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer表格数据流(TDS)远程过程调用(RPC)协议流是不正确的。参数1("):数据类型0x38未知。
如何修复连接?我需要为Windows或Java安装任何驱动程序吗?
您正在使用过时和过时的驱动程序版本。该错误是SQLServer 2000 driver
。要纠正这个问题,您需要将驱动程序更新到较新的版本。有关错误原因和解决方法的详细信息,请参见:
Microsoft KB Article 915834
要升级到更高版本(2005+)的驱动程序,您需要更新本文中描述的jar文件和连接字符串。如果您无法访问代码以进行更改,则需要联系Microsoft并请求一个可用的热修复程序,该修复程序可以修复KB中描述的2000驱动程序中的错误,如下所示:
要立即解决此问题,请联系Microsoft产品支持获取热修复的服务。查看微软的完整列表产品支持服务的电话号码和信息支持费用,请访问以下微软网站:http://support.microsoft.com/contactus/?ws=support
也有可能找到驱动程序.dll文件的稍后"修补"版本。我能够在此URL找到下载的示例:Sqlsrv32.dll 2000.086.4412.00,这是一个比您正在使用的版本更高的版本,可能会纠正这个问题。如果这不起作用,搜索比这个更晚的下载,正如您所看到的,是构建#4412。如果你从微软以外的网站下载,请确保在使用前对文件进行病毒扫描。