안녕하세요.
데드락이 걸려서 트랜잭션내에서 테이블 접근순서를 바꿔서 안나더니..
다시 또 나서 이렇게 글을 남겨봅니다.
Traceon 플래그 켜고 로그를 남겨서 보고있는데요.
예전하고 다르게
로그 뷰어에서 이 로그 항목에 대한 정보를 읽을 수 없습니다. 원인: Data가 Null입니다. 이 메서드 또는 속성은 Null 값에 호출될 수 없습니다.. 내용:
이런 로그가 찍히고 나서 데드락리스트가 나오는데요.
A 테이블에 PK를 B, C테이블에서 FK로 참조하고, Update, Delete 참조속성이 걸려있는데요.
그래서 지울때는 따로 Transaction이나 이런거 걸지 않고 Delete from A where id=id 뭐 이런식으로 그냥 삭제만 날리는 식인데요.
이것때문에 저렇게 Null이 나오는건지...
로그를 한번 첨부해보겠습니다...
26일, 27일자 로그입니다.
조언부탁드립니다.
그럼 오늘도 좋은하루되세요~
Comment 1
-
무념
2013.04.29 16:57
dbo.SubUpdatePoint 프로시저를 까봐야 알 것 같은데요. +_+;
예상 시나리오...
삼자가 해당 키에 대한 값을 먼저 지웠다.
그후에 포인트 업데이트 프로시저가 가동했는데 그 키를 업데이트 하려고했다.
뻑났네.... 없네.
에러 에러 에러..
여기서 롤백처리 : 이 업데이트가 프로시저에서 제일 첫 실행이었다.
에러나서 실행한게 하나도 없는데 롤백 시도 했다.
트랜잭션 해제가 안되고 쌓이더라(원래 말도 안되는건데 sql 일부 버전에서 이 오류가 있었습니다)
트랙잭션 해제 안되고 짝짝 쌓이네요. 어쩔까요? 운명하셔야 합니다.
자세한건 프로시저를 까봐야 알 것 같습니다.