带有JDBC的SQL Server-找不到带有句柄X的准备好的语句

时间:2018-08-11 13:10:07

标签: sql-server c3p0 mssql-jdbc

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

准备好的语句可以很好地执行SQ​​L查询,但是每周执行一次左右,它们将失败,并带有以下异常:

  

com.microsoft.sqlserver.jdbc.SQLServerException:找不到带有句柄2的准备好的语句。

     

在com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
  在com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
  在com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:404)
  在com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement $ PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:350)
  在com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
  在com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
  在com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
  在com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
  在com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:332)
  在com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)

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

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

我应该考虑什么才能找出问题所在?

0 个答案:

没有答案