Sybase IQ 16: java.sql.SQLException: JZ0C0: соединение уже закрыто
Я использую Sybase IQ версии 16.0 и драйвер SQL Anywhere JDBC 4.0 (com.sybase.jdbc4.jdbc.SybDriver), как указано в Sybase Support Doc . Я написал простой код Java, как показано ниже.
import com.sybase.jdbc4.jdbc.SybDriver;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.stream.Collectors;
public class TestClass{
public static void main(String args[]) throws Exception {
try {
String table_name;
Class.forName("com.sybase.jdbc4.jdbc.SybDriver");
Connection con = DriverManager.getConnection("jdbc:sybase:Tds:10.13.93.30:2638?ServiceName=xyz", "username", "password");
System.out.println("Connection established......");
//gets all table names from system table
String query = "SELECT TABLE_NAME, USEr_NAMe FROM SYS.SYSTABLE T INNER JOIN SYSUSER U ON T.CREATOR = U.USER_ID WHERE USER_NAME = 'perf_TS2_Schema_1'";
PreparedStatement stmt = con.prepareStatement(query);
ResultSet rs = stmt.executeQuery();
ResultSetMetaData md = rs.getMetaData();
while (rs.next()) {
table_name = (String) rs.getObject(md.getColumnName(1));
System.out.println(table_name);
PreparedStatement stmt2 = con.prepareStatement("Select * from perf_TS2_Schema_1." + tables.get(i));
ResultSet rs2 = stmt2.executeQuery();
// do something with resultset
}
if (con != null)
con.close();
}
catch(SQLException e){
System.out.println(e);
}
}
}
Соединение разрывается со стороны SybaseIQ после обработки около 740-780 таблиц (что занимает около 15 минут) с ошибкой ниже
java.sql.SQLException: JZ0C0: Connection is already closed
Я попытался изменить приведенные ниже настройки сервера, как указано на веб-сайте поддержки.
MAX_IQ_THREADS_PER_CONNECTION : 5000
DEDICATED_TASK : ВКЛ.
MAX_STATEMENT_COUNT: 2147483647 (максимальное значение INT)
Но все равно не повезло. Любая помощь в этом будет высоко оценена.