본문 바로가기

카테고리 없음

MSSQL - 서버 재연결

업체 MES로 실적 정보를 전송해 주는 프로그램을 만들었는데 지속적으로 실적 누락이 발생한다는 연락을 받았다.

 

로그를 확인해보니 실적 전송 실패 로그가 남아 있어 네트워크 연결 상태에 대한 문제라고 판단. 코드를 수정했다.

 

프로그램 테스트를 하면서 알게된 것은

재접속 방법에 유의 해야한다는 것,,,

 

adoDB 재접속을 할 때 Close 이후 Open 동작만 하게 되면 문제가 생긴다.

정상적으로 Close가 되었는지 확인해보았는데 Close가 되었음에도 Open 동작을 할 때 예외처리로 나가는것을 확인했다.

 

그래서 코드를 아래와 같이 수정했다.

 

adoQuery.Close;

adoQuery.Free;

adoQuery.Connection.Free;

adoQuery.Create;

....새로 커넥션 스트링 생성 and 커넥션 하기

adoQuery.Open;

 

위의 순서로 하니 Close 이후 Open 단에서 에러 발생 없이 다음 코드로 넘어간다.

 

재접속은 해결했지만 어쨌든 네트워크가 불안한 상태인 것이 1차적인 원인이 되는데 업체 쪽에서는 절.대. 끊어질 일이 없다는 말만 반복하고 대화가 안된다,,,,

 

 

 

내용 증명을 위해 프로그램을 하나 새로 만들었다.

 

1초 마다 MES 서버로 Ping을 날린 뒤 Ping 결과를 로그로 남기는 코드를 짜서 컴파일하고

부팅이 되면 자동 실행되어 백그라운드에서 몰래,,,, 돌아가게 해두었다.

 

며칠 뒤 확인해보니 네트워크 선로의 문제인지 네트워크가 굉장히 자주 끊어지는 것으로 확인되었다.

어떤 날은 단 한번도 끊어지지 않는 반면 또 어떤 날은 근무시간 기준 250여회나 로그가 남아 있었다.

 

프로그램 동작 주기가 1000ms 인 점을 감안하면 하루에 네트워크가 끊어지는 횟수는 훨씬 많을것이라고 생각된다.

 

재접속 동작은 넣어두었지만 근본적인 해결은 될 수 없으니 추후 로그 내역을 가지고 업체랑 한바탕 해야할듯하다.