웹 응용 프로그램. C#, SQL 2k8교착 상태 대 로깅
실제 동적 SQL이 실행되기 전에 많은 일들이 진행되고 원하는 레코드가 반환됩니다.
최근에 트랜잭션 커밋과 전체 앱 (교착 상태 문제)에 대해 몇 가지 코드를 추가하고 전체 9 야드를 롤백하고 다시 시도해보십시오.
큰 플러스이지만, 정말 필요했습니다.
하지만 목록에 가능한 모든 문제를 디버깅하기 위해
, 나는 (옛 기록을 주 단지 지난 몇 저장하지 않습니다) 로그 테이블에 동적 SQL 문자열
을 저장했다 문제는 다음과 같습니다. 현재 목록이 손상된 경우 로그가 없습니다. 때문에 롤백 물건 ...
내 최고의 아이디어는 지금까지 두 번 목록을 호출했다 :
는 "확인"- 모드, 동적 SQL을 만들 로그 TBL에 저장됩니다, 하지만
"목록"EXEC하지 않을 것이다 - 모드 중 하나를 것입니다 :
도 2a. 동적 SQL을
또는
2B를 다시 계산. "check-mode
둘 중 하나 또는 2b 중 하나 인 동적 SQL을 동적으로 재사용하는 것은 목록 저장 프로 시저 중 가장 비싼 부분이 동적 SQL의 실제 실행이기 때문에 성능상의 문제가 없어야합니다. "- 모드는 기본적인 문자열 연결입니다
교착 상태 재시 부분은도 좋다 번째 DB 호출을 할 것입니다 여전히
나는이 생각에 가장 행복한 사람이 아니다 궁금 .!.. 이것을 달성하는 더 좋은 방법이 있다면.
전체 재시도 논리가 하나의 거대한 트랜잭션에 있습니까? 아니면 다시 시도 할 때마다 새 트랜잭션을 시작합니까? – mellamokb
마다 재시도가 새로운 트랜잭션입니다. – Ash