"com.microsoft.sqlserver.jdbc.SQLServerExceptionが発生しました:SQL Serverが不完全な応答を返しました。接続が閉じられました。例外JavaアプリケーションのAzure SQLデータベースで連続したSQLクエリを実行しています。Azure SQLデータベースで実行されているSQLクエリは大量のデータをフェッチしています。データをフェッチしている間に各行で何らかの操作を実行するので実行に時間がかかります。 SQLクエリの実行中に一定期間が経過した後の例外(期間に一貫性がない).SQLサーバのバージョンは12.0.2000.8です。SQL Server 2012接続が閉じられた問題
誰でもこの現象が発生しますか?
コードスニペット
sourceDbConnection = SourceDBConnector().getConnection();
stmt = createStmt(sourceDbConnection);
resultSet = stmt.executeQuery(sql query);
while (resultSet.next()) {
// .. Do some operation.
}
SQLクエリ
SELECT coalesce(rfr.UniqueID,rs.UniqueID) as PGUID, rs.resultname, rs.ResultId, rs.modifieddatetime FROM tblResult rs
JOIN tblResultOrg org ON org.CustomerId = rs.CustomerId
LEFT OUTER JOIN tblResultFormRef rfr ON rfr.UniqueID = rs.UniqueID
WHERE org.ORGID IN (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25) AND NOT EXISTS (SELECT NULL FROM tblSynchedResult srs WHERE srs.ResultId=rs.ResultId) AND rs.Status=1
ORDER BY rs.modifieddatetime
例外:
com.microsoft.sqlserver.jdbc.SQLServerException: SQL Server returned an incomplete response. The connection has been closed.
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1352) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1339) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.TDSReader.readPacket(IOBuffer.java:3740) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.TDSReader.nextPacket(IOBuffer.java:3687) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.TDSReader.ensurePayload(IOBuffer.java:3663) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.TDSReader.readBytes(IOBuffer.java:3979) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.TDSReader.readWrappedBytes(IOBuffer.java:4001) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.TDSReader.readLong(IOBuffer.java:3971) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.PLPInputStream.makeStream(PLPInputStream.java:73) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.PLPInputStream.makeTempStream(PLPInputStream.java:59) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.PLPInputStream.isNull(PLPInputStream.java:45) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.ServerDTVImpl.getValuePrep(dtv.java:2345) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.ServerDTVImpl.getValue(dtv.java:2408) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.DTV.getValue(dtv.java:176) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.Column.getValue(Column.java:113) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:1981) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:1966) ~[sqljdbc4-3.0.0.jar:na]
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getString(SQLServerResultSet.java:2291) ~[sqljdbc4-3.0.0.jar:na]
at org.apache.commons.dbcp2.DelegatingResultSet.getString(DelegatingResultSet.java:199) ~[commons-dbcp2-2.1.1.jar:2.1.1]
at org.apache.commons.dbcp2.DelegatingResultSet.getString(DelegatingResultSet.java:199) ~[commons-dbcp2-2.1.1.jar:2.1.1]
at com.mso.service.etl.job.prepared.EtlPreparedJob.handleFormsHavingNoRecordings(EtlPreparedJob.java:236) ~[classes/:na]
at com.mso.service.etl.job.prepared.EtlPreparedJob.execute(EtlPreparedJob.java:180) ~[classes/:na]
at com.mso.service.etl.job.prepared.EtlPreparedJob.run(EtlPreparedJob.java:105) ~[classes/:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_85]
at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_85]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_85]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_85]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_85]
ちょっとピーター、情報を共有してくれてありがとう。 – Chirag
@Chirag更新しますか? –
Peter:更新はありません。私たちはまだ原因を見つけています。 – Chirag