在运行使用SQL Server JDBC驱动程序(版本4.0)使用C3P0支持的连接池访问SQL Server的应用程序时,我们遇到了一个奇怪的错误,大约每周发生一次(没有可观察的模式或时间) .

准备好的语句可以很好地执行SQL查询,但每周大约一次,它们会因以下异常而失败:

com.microsoft.sqlserver.jdbc.SQLServerException:无法在com.microsoft.sqlserver.jdbc.SQLServerStatement的com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)中找到带有句柄2的预准备语句 . getNextResult(SQLServerStatement.java:1515)com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement $ PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)at com com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerNo .java:180)com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.jav) a:332)at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)

用于SQL Server(4.0)的Microsoft JDBC驱动程序的版本不支持设置预准备语句缓存(或者至少我理解读取jdbc driver wiki) .

C3P0配置为 maxStatementsPerConnection = 50maxStatements = 0 ,最大连接数设置为100 .

我该怎么做才能找出可能出现的问题?