|
그렇군요...저도 하도 답변이 없어서 그냥 처리했습니다...
저는 먼저 디비연결 여부 체크하는 TDatabase를 하나 더 생성을 했습니다.
쿼리문을 try catch로 해서 에러가 나면 쿼리문 에러든 디비연결이 안되서 나는 에러든 상관없이
catch에 걸리면 쓰레드를 실행시킵니다.(멈추는 현상이 나타날까봐)
이 쓰레드에서는 연결여부체크하는 TDatabase로 재연결시도 해서 연결이 안되면
계속 연결될때까지 체크를 합니다.
그런 후에 연결되면 쓰레드도 멈추게 하구요~ 정말 이런방법밖에 없는건지..
참으로 어이없습니다.
암튼 답변 달아주셔서 감사해요~^^*
수고하세요~
땅주인 님이 쓰신 글 :
: 저의 경우 30초~1분 단위로 아무 의미 없는 쿼리문(SELECT GETDATE() ) 뭐..이런 문장을 날려서
: 정상적 리턴이면 그냥 가고, 에러가 나면 에러를 카운트 했다가 3번 정도 실패하면, DB 접속에
: 문제가 있는 걸로 보고, DB를 끊고 다시 접속 시도 합니다.
: 님이 말씀하신대로 Try ~ Catch로 잡아도 정확하게 넘어오지 않아서, 걍 ~ 이렇게 씁니다.
: 더 좋은 방법 있으면 저한테도 알려 주세요..
:
: 서기사랑 님이 쓰신 글 :
: : 안녕하세요~ 처음으로 질문을 해봅니다 ^^*
: :
: : DB연결이 되어있는 상태에서 도중에 네트워크 장애로 인해서 DB서버가 죽는 경우에
: :
: : 쿼리문 명령을 하게 되면 프로그램이 멈춰버리더라구요~
: :
: : 그래서 쿼리문을 try-catch로 에러코드로 통신 오류가 났는지 체크해보려고
: :
: : 알아봤는데 에러코드가 정확하게 안나타나더라구요~General SQL error라고 에러코드는 13059번으로
: :
: : 리턴이 되더라구요~ 딱 통신문제라고 알려주기만 하면 좋을텐데...
: :
: : 제가 잘 못찾아서 그런지..정보가 없더라구요..
: :
: : 제가 생각하기에는 다른 분들도 이 고민은 해보셨을텐데...
: :
: : 어떻게 해결 하셨는지 너무 궁금합니다..
: :
: : 그리고 DB연결 시도 시 연결이 안될때 걸리는 시간(timeout)이 너무나 깁니다..
: :
: : 연결 시도 TimeOut은 어디서 설정해야 되나요?
: :
: : 참고로 MySQL, MS SQL 모두 쓰고 있습니다..
|