Q&A

  • 델파이의 database 이용에 대해서
서버는 SQL 2000을 이용하여 프로그래밍 하였는데,

프로그램이 하루에 2,3번 정도 아무런 경고 메세지 없이 죽습니다.

죽는것도 다운이 아니라, 아예 프로그램이 종료 됩니다.

그리고,한가지 특징적인 것은 죽기전에는 항상 마우스 아이콘이

약 2,3초 동안 모래시계 모양(및에 sql이 없는 그냥 일반 모래시계모양) 으로 바뀌다 그냥 죽어버린다는 것입니다.



그래서,이러한 현상에 대한 여러가지 실험을 한 결과는 다음과 같습니다.



1.ADO COMPONENT를 이용하여 ODBC를 통해 쿼리하는 경우

1일 10회 정도 다운

2.OLEVARIANT를 이용하여 ODBC를 쿼리 하는 경우

1일 3회 정도 다운

3.BDE를 이용하여 SQL에 직접 쿼리하는 경우

2일에 약 1회 정도 다운



그런데,한델이나 코델에 Q/A에 가보니 저같은 경험을 겪고 계시고

겪으셨던 분들이 조금 계시더군요.

물론,아직 해결방법은 못찾으신듯 합니다.



쿼리 발생 빈도는 약 1분당 100회 정보 됩니다.



서버는 듀얼 CPU에 램도 1G니까 시스템이 딸리지도 않으며,

죽을때의 CPU 부하도 약 5%정도밖에는 사용하지 않은것으로 보아

QUERY나 기타 부하 문제는 아닌듯 합니다.



제가 최종 결론 내린것은 DELPHI의 버그가 아닌가 생각되는데,

이부분에 대해서 지금 작업하시는 환경이 저와 비슷하거나

아니면 이러한 현상에 대해 알고 계신 분들께서는 글을 올려주시기 바랍니다.

이 문제는 저 뿐만이 아니라, 똑같은 경험을 다른 분들도 하지 않기 위해서 DELPHI로 데이타 베이스 프로그래밍을 하시는 모든 분을 위해 관심을 가져 주셔야 문제인것 같습니다.



그리고,다른 계시판에 서 올라온 비슷한 사례등을 및에 올려 놓겠습니다.



3  COMMENTS
  • Profile
    이성윤 2001.08.06 00:35
    '궁굼이'라는 분께서 올려주신 자료입니다.



    고수님들의 도움이 꼭 필요합니다.

    조금이라도 해주실 말씀이 있으시면 답변해 주세요..!



    TServerSocket으로 호스트 프로그램 만들어 사용하고 있는데

    몇 시간이 지나면 하루 1~3번 정도 무작위로 다운됩니다.

    그런데 신기하게도 아무런 메시지도 없이 다운되요..!

    델파이로 디버그 걸어 실행시키면 갑자기 델파이 까지

    죽어 버립니다.

    메모리 할당도 거의 하지 않고 (10M 미만) CPU 점유율도 5% 이내거든요.

    정말 미치겠습니다..!

    그냥 팍 죽어버립니다.

    오류 메시지라도 있었으면 좋겠구만....

    처음에는 DB문제라 생각했는데요..! 계속 테스트하다 보니

    그건 아닌거 같구요..!

    혹시 저처럼 갑자기 아무 오류 없이 다운 당하셨던 분이 계시면

    꼭 답변해 주세요..

    굳이 해결 방법이 아니더라도 한말씀들 부탁합니다.

    이것이 델파이의 한계 인지도 모르겠군요..!

    아참! 그리고 델파이 6으로 컴파일 해보기도 했는데요..!

    그래도 마찬가지입니다..!



    참고로 TMemoryStram을 이용해서 사용자에 들어온 메시지를

    담아두었다가 순차적으로 처리하고 있고요..

    SQL 2000에 데이터를 이용하고 있고요..!

    이상 입니다..!

    꼭 고수님들 답변 부탁합니다.

  • Profile
    이성윤 2001.08.06 00:34
    '아폴론'이라는 아이디를 가지신 분께서 올린 글입니다.

    -----------------------------------------------------------

    query컴포넌트, dbgrid, dbedit를 사용한 폼입니다..



    하나의 폼이 하나의 exe로 되어 있는 프로그램에서...

    조회 버튼을 눌렀을때

    query.Open;

    이런 작업을 해주는데..

    테스트 작업을 하는 중간에 가끔씩

    커서가 모래시계(sql)로 바뀌고는 프로그램이랑 델파이랑 동시에 죽어버려요...

    동일한 폼에 두개의 query와 두개의 dbgrid가 있을 경우에...

    또다른 query는 제대로 open이 되는데...

    주query open시에 그대로 죽어버리거든요....

    물론 하나의 query만 있는 폼에서도 마찬가지 문제가 발생하구요,....

    어느 부분을 체크해야 할지.. 알려주세요...

    감사감사!!!!



  • Profile
    이성윤 2001.08.06 00:33
    '아폴론'이라는 분의 질문에 올라온 답변입니다.

    글의 내용을 보면 결과적인 현상은 해결의 실마리를 찾을수 있을듯 합니다.

    헌데,올려주신 부분의 소스에서 이상한 점은 발견하지 못했고,제가 코딩한 프로그램에서는 정확히 open,close가 되었고 있음을 확인하였습니다.

    -------------------------------------------------------------



    음...

    이런경우는 아니겠지만 혹시...

    with Query1 do begin

    close;

    sql.clear;

    ...

    ..

    open;

    while not eof do begin

    with Query1 do begin

    close;

    sql.clear;

    ...

    ...

    open;

    end;

    end;

    end;

    위구문으로는 커서가 모래 시계로 바뀌면서 죽습니다.

    즉 쿼리를 중복해서 오픈하려 하면 죽는 경우가 생기는데 정확히 open, close 가

    되면 상관 없지만 만약 그렇지 않다면...



    다른곳을 비추러 가도 될라나?