FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[4615] 파이어버드 임베디드 버전에서 일괄 데이터 insert시 오류
ks [] 1968 읽음    2013-06-25 11:21
안녕하세요 원인을 알수 없는 오류가 발생하여 도움을 좀 얻고자 합니다.
작은 단서라도 한줄 달아주시면 감사하겠습니다. ...

개발툴 : 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();

}

+ -

관련 글 리스트
4615 파이어버드 임베디드 버전에서 일괄 데이터 insert시 오류 ks 1968 2013/06/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.