sql 7.0을 사용하고, ado를 이용하여 개발중입니다.
transaction을 시작하고(ADOconnection.begintran)
테이블에 수정 및 추가 작업을 한뒤 transaction을 끝내기 전에
다운 혹은 네트웍에러등의 이유로 비정상적으로 클라이언트가 commit tran 혹은 rollback을
시키지 않으면 락이 계속 걸려있어 다른 클라이언트가 작업을 하지 못합니다.
현제 까지의 방법은 관리자가 직접 process를 kill하는 방법밖에 없는데
현실적으로 관리자가 계속 붙어있을 수 없는 입장입니다. 자동적으로 lock이 해제되는
방법은 없을까요?
lock_timeout은 설정해 보았는데, 나중에 건 락을 해제하지 원래 걸려있는 락을 해제하지
않습니다. 즉 위의 상황은 수정을 한뒤니 exclusive lock이 실제로 걸려있는데,
select 를 하면 shared lock을 걸기때문에 select를 하지 못하고 계속 대기를 하다가,
뒤의 SELECT를 해제 시킵니다. 결국 비정상종료된 클라이언트가 건 락은 계속 살아있게
됩니다.
급합니다. 고수님들의 많은 답변 진심으로 부탁드립니다.