AIX에 올린 Altibase 4.0을 사용하며, Windows에서 클라이언트 프로그램을 개발하는 중입니다.
최근데이타만 메모리테이블로 보관됩니다. 매일마다 각기 다른 테이블로 디스크로 옮겨져서 데이터가 보관됩니다.
최근 데이터를 가져오는 부분에서는 문제가 없지만
과거 이력조회로 과거 일주일정도는 제대로 표시가 되는데, 1달정도 데이터를 불러오는 부분에서는
ODBC 드라이버쪽에서 에러가 납니다.
그 위치가 사방에 정신없이 나오네여
ODBC readerAccessViolationException 쪽으로 에러메세지가 나오는데 ,
어쩔땐 넘어가고 대부분 에러가 나옵니다.
해당 에러가 발생한 시점에 ODBC Connection 오브젝트를 살펴보면 세션 상태가 close로 나옵니다.
아무래도 먼저 ODBC 접속이 끊어지고 이후 발생하는 에러로 보이는데요
이런 문제를 어떻게 해결할 수 있을까요
//////
아래고 같이 사용합니다.
tableList 에는 날짜별 조회할 목록이 들어가고, 그것을 각가 조회해서 내부적으로 사용하는 구조체에 밀어넣습니다.
옵션 안건드리고 그냥 사용하는 형태라 뭔가 조정이 필요한가요?
OdbcConnection conn = new OdbcConnection(source);
conn.ConnectionTimeout = conn.ConnectionTimeout;
try
{
conn.Open();
}
catch (OdbcException e)
{
System.Diagnostics.Debug.WriteLine(e.Errors.ToString());
return;
}
OdbcCommand cmd;
OdbcDataReader reader;
string tbl;
for (i = 0; i < tableList.Count; i++)
{
tbl = select.Replace("_DAY", "_" + tableList[i]);
cmd = new OdbcCommand(tbl, conn);
reader = cmd.ExecuteReader();
if (reader.HasRows == true)
{
while (reader.Read())
{
if (reader.GetValue(0) == null)
continue;
dbData.SetItem(Int64.Parse(reader[0].ToString()), reader.GetInt64(1), reader.GetInt64(2));
}
reader.Close();
reader = null;
}
cmd = new OdbcCommand("commit", conn);
cmd.ExecuteNonQuery();
}
conn.Close();
|