我在 Java EE Web 应用程序中调用了以下方法。
public static void submitToPending()
{
Db db;
ResultSet rs;
try
{
db = new Db("Database.properties");
rs = db.issueQuery(getDescriptorList());
while (rs.next())
{
db.insertApplicationData(rs.getString("Id"));
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
db = null;
rs = null;
}
}
这是我正在运行的一小段代码,用于将大约 40,000 条新记录插入 SQL Server 2000 数据库。此代码从托管在生产环境中的 Solaris 10 服务器上的 JSP 执行。在今年之前,这段代码只需要处理大约 18,000 条记录,而且运行良好。今年进行了一些更新,并且,为了节省细节,现在处理了大约 40,000 条记录。
在开发过程中,我在Windows PC上的生产中使用的同一数据库(因为记录集不冲突)上进行了测试,该数据库来自运行在 Eclipse 内的 Tomcat 服务器。一切正常,所有 40,000 条左右的记录都进入数据库。
当我将站点安装到生产服务器并运行测试时,我注意到该过程进行到一半以上失败了,并出现以下异常消息:
com.microsoft.sqlserver.jdbc.SQLServerException:连接已关闭。com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerConnection.checkClosed(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerStatement.checkClosed(Unknown Source) at com .microsoft.sqlserver.jdbc.SQLServerResultSet.checkClosed(Unknown Source) at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(Unknown Source) at (ClassNameOmittedToProtectTheInnocent.java:74)
SQL Server 设置为无限制同时连接、无限制超时。假设我在Db类中的代码没问题(因为它在 Windows 方面工作,并且在数据增加之前,在 Solaris 方面表现良好)有什么想法可以开始检查?
我尝试跟踪 SQL Server 以查看连接是否发生了问题,但即使在写入堆栈跟踪之后它似乎仍然存在。
如果我可以提供任何其他信息,请告诉我。我会尽我所能提供帮助。