안녕하세요 원인을 알수 없는 오류가 발생하여 도움을 좀 얻고자 합니다.
작은 단서라도 한줄 달아주시면 감사하겠습니다. ...
개발툴 : VS 2008 C#
OS : Windows 7(32bit)
** 오류 메세지
database file appears corrupt (D:\TEST.FDB)
wrong page type
page 9935 is of wrong type (expected 7, found 5)
** 작업내용
DB2 Server에서 Local FDB로 데이터를 내려 받는 작업입니다. (데이터량이 적은 편은 아님)
같은 작업을 반복적으로 실행했을때(보통 10회 이상 했을때 발생) 나타납니다.
한번 작업이 끝나고 계속적으로 실행시켰을때 오류현상이 잘 나타납니다.
에러 발생시 동일한 작업을 다시하면 오류가 나타나지 않습니다.
데이터량은 전체 최대 7000 row 까지도 가능합니다.
가장긴 테이블의 길이 4200byte 정도이고, 특정 컬럼 하나는 varchar(4000) 입니다.
** 간략한 소스내용
private FbConnection _FCON = new FbConnection();
private FbCommand _FCMD = new FbCommand();
private FbTransaction _FTN = null;
try {
_FTN = _FCON.BeginTransaction();
_FCMD.Transaction = _FTN;
strFSQL = "DELETE FROM Table1";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery(); ================> 에러 발생 지점
strFSQL = "DELETE FROM Table2";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery();
strFSQL = "DELETE FROM Table3 ";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery();
strFSQL = "DELETE FROM Table4";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery();
strFSQL = "DELETE FROM Table5";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery();
strFSQL = "DELETE FROM Table6";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery();
strFSQL = "DELETE FROM Table7";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery();
strFSQL = "DELETE FROM Table8";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery();
strFSQL = "DELETE FROM Table9";
_FCMD.CommandText = strFSQL;
_FCMD.ExecuteNonQuery();
// 아래의 내용을 테이블 마다 반복적으로 실행합니다.
// Was 서버에서 데이터를 받아오는 부분
#region 1.Table1
{
bgWork.ReportProgress(0, (object)"Import : Table1");
IList<hmap> tList = null;
hSendMessage.Clear();
hSendMessage["param1"] = GlobalVar.Personal.getS("param1");
hSendMessage["param2"] = GlobalVar.Personal.getS("param2");
var restUrl = RestUtil.GetRestUrl(RestCommand.getCommonList);
tList = RestUtil.RestRequestList(hSendMessage, restUrl);
//Check Json
if (GlobalVar.JsonErrorCheck == "" && tList != null)
{
intRecCnt = 0;
// 로컬 FDB에 데이터를 저장하는 부분.
Row_Table1 sbRow = new Row_Table1(_FCMD);
foreach (hmap tRow in tList)
{
sbRow.SetRowData(tRow);
sbRow.Save();
intRecCnt += 1;
bgWork.ReportProgress((int)((double)intRecCnt / tList.Count * 100));
}
sbRow = null;
}
}
#endregion
_FTN.Commit();
}
catch (System.Net.WebException)
{
if (_FTN != null)
if (_FTN.Connection != null) _FTN.Rollback();
}
catch (Exception ex)
{
if (_FTN != null)
if (_FTN.Connection != null) _FTN.Rollback();
}
finally
{
_FCON.Close();
}
|