ExecuteReader 시도 중에 Database Link 된 테이블의 프리징 현상이 발생하였습니다. 파라미터가 있는 경우에는 정상적으로 작동하는데, 파라미터가 없는 경우(string empty)에는 멈추어버리는 현상입니다. 특이한 점은 다른 데이터베이스에서 동일한 조건에서 호출하는 경우에는 문제가 없는데, 특정 DB에서만 그렇다는 것입니다! 이러한 현상이 발생하는 것처럼 불규칙적으로 나타나는 오류는 처리하기가 상당히 곤란하죠?
우선 처리 방법은, 파라미터가 없는 경우는 해당 부분을 호출하지 않도록 수정하였으며, 정상적으로 작동하는 것을 확인하였답니다.
DBMS 에서는 정상적으로 SELECT 가 되는데, 프로그램 상으로만 ExecuteReader 시에 freezing 되는 현상을 발견했습니다.
특이사항은 다음과 같습니다.
- DBLINK 를 사용한다는 것
- 서버의 문제로 DB 셧다운이 있었다는 것
조건문에 WHERE condition = '' (초기 설정 시에는 매개변수가 없어서 '' 을 호출하고 다음부터는 매개변수 값이 존재하여 해당 값으로 호출함) 을 제외하니 정상적으로 작동을 하네요.
처음 보는 현상이라 기록하였는데, ExecuteReader 를 호출하는데 프리징 되는 문제가 발생하였을 때, 해결의 실마리를 드리지 않을까 싶어서 작성해 봅니다~
parameter 가 없는 경우는 해당 부분을 호출하지 않도록 수정하니 정상적으로 작동합니다.