我正在使用Apache POI将结果集写入Excel。结果集由通过JDBC连接到SQL Server 2014创建。
调用方法有代码
ExportLargeResultSetoExcel publishQry = new ExportLargeResultSetoExcel();
publishQry.generateExcel(rs, FILE_TO_WRITE);
直到昨天,代码工作正常。但是,从今天开始,在处理几百行之后会发生连接重置。如果结果集大约有10或50行,则正在创建excel。但是,如果有1000行,则在循环之后重新连接,例如,大约900行。我在stackflow和其他论坛上研究了其他帖子。我在桌面上安装了SQL Server。我按照一些帖子中的建议检查了配置工具管理器设置,端口和启用的TCP / IP服务。但是,我认为它们不会产生任何影响,因为它们只会影响本地设置。我捕获了SQLServerException,它返回了一个SQLS值为08S01。下面是异常的详细堆栈跟踪。有没有办法以编程方式获得连接超时?有人可以帮忙并建议可能出现的问题吗?
2016-12-25 17:03:32.791 1. ResultSet.getString(3)
com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2399)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2383)
at com.microsoft.sqlserver.jdbc.TDSChannel.read(IOBuffer.java:1884)
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:6642)
at com.microsoft.sqlserver.jdbc.TDSReader.nextPacket(IOBuffer.java:6595)
at com.microsoft.sqlserver.jdbc.TDSReader.ensurePayload(IOBuffer.java:6571)
at com.microsoft.sqlserver.jdbc.TDSReader.readBytes(IOBuffer.java:6864)
at com.microsoft.sqlserver.jdbc.TDSReader.readWrappedBytes(IOBuffer.java:6886)
at com.microsoft.sqlserver.jdbc.TDSReader.readInt(IOBuffer.java:6827)
at com.microsoft.sqlserver.jdbc.ServerDTVImpl.getValue(dtv.java:4080)
at com.microsoft.sqlserver.jdbc.DTV.getValue(dtv.java:226)
at com.microsoft.sqlserver.jdbc.Column.getValue(Column.java:144)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2099)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2084)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getString(SQLServerResultSet.java:2427)
at net.sf.log4jdbc.ResultSetSpy.getString(ResultSetSpy.java:2413)
at fnSampleTest.ExportLargeResultSetoExcel.generateExcel(ExportLargeResultSetoExcel.java:148)