ADODB Close() 관련 질문 있습니다.
안녕하세요?
지금 프로젝트때문에 MFC/ADODB로 작성된 소스를 넘겨 받아서
요구사항에 맞춰서 수정중에 있습니다.
헌데 하나 문제가 발생한게
BeginTrans()를 호출 한 후
트랜잭션 처리중 DBMS가 다운 되거나 DBMS가 설치된 서버와의 Network Fail인 상황(거의 일어나지 않겠지만요...)
에서 예외 처리를 해주어야 하는데
이때 Connection 개체의 Close() 함수를 불러주니깐
"트랜잭션하는 동안에는 연결 개체를 명백하게 닫을 수 없습니다"의 오류 메시지를 뿌리면서
Close()가 실패를 하더군요.
Close()이전 로그는
"SHUTDOWN이 진행 중입니다. 로그오프하십시오."
"[DBNETLIB][ConnectionWrite (send()).]일반 네트워크 오류입니다. 네트워크 설명서를 참조하십시오."
보시면 아시겠지만 그냥 서비스를 중지 시켜버렸습니다...
이후 시스템이 정상화가 된 이후에 Connection은 성공하나 역시나 예상대로
"이 세션에서는 트랜잭션을 더 이상 시작할 수 없습니다" 이 오류 메시지가 뿌려지고요.
현재 프로세스는 DB Connection을 하나 맺어놓고 쭉 그 세션을 사용하다 문제 있을 경우 끊고
재접속을 시도하다가 재접속되면 하던일을 계속하는 프로세스 입니다.
이런 상황일 때 즉 BeginTrans()가 불려진 이후 Commit()이나 Rollback()이 불려지기전에
DBMS와 물리적으로 접속이 불가능한 경우 어떤식으로 개체를 정리 해주어야
다시 정상적으로 Connection을 붙일 수 있을지 궁금합니다.
구글링 아무리 해보고 해도 방법이 나오질 않더군요...
혹시 해결책 알고 계신분 힌트 좀 주시기 바랍니다. ^^
댓글 달기