2

从基于 Spring 的应用程序访问 SQL Server 数据时,我遇到了一个奇怪的性能问题。在我当前的设置中,Spring java 应用程序运行在单独的机器上,从远程 SQL Server DB 访问数据。我在 Spring 中使用 NamedParameterTemplate,我相信它使用 Prepared Statement 来执行查询。由于某种原因,某些查询需要很长时间才能完成(大约 2 分钟)。JAVA 应用程序在运行 64 位版本 Java v1.6 的 64 位机器上运行,SQL Server 是 MS SQL Server 2008 R2。

奇怪的是,如果我从运行 Windows XP 32 位的笔记本电脑上运行相同的 Java 应用程序,运行相同版本的 Java v1.6,查询时间不到一秒钟,访问完全相同的远程数据库服务器(事实上,我已连接通过VPN)

这表明问题不在于 Spring 框架,而可能在于 SQL JDBC 驱动程序。我正在使用 Microsoft JDBC Driver 4.0 for SQL Server (sqljdbc.jar)

我完全一无所知,因为可能出了什么问题,并且不确定从哪里开始我的调试过程。我了解,我的问题中没有太多信息,所以如果您需要任何具体细节,请告诉我。

感谢您的任何帮助/建议。

4

1 回答 1

1

我认为这可能是由于您的 java 版本和 jdbc 驱动程序的组合未能与服务器握手连接。请参阅Driver.getConnection hangs using SQLServer driver and Java 1.6.0_29http://blogs.msdn.com/b/jdbcteam/archive/2012/01/19/patch-available-for-sql-server-and-java- 6-update-30.aspx

如果是这样,切换到 1.6.0 升级 30 或更高版本并应用kb 2653857应该可以修复它。

于 2013-11-01T11:04:57.147 回答