쿼리 문에서 트랜잭션이 시작되더라도 catch 문이나 if 문 등의 다른 경로를 통해 탈출한 후에는 커밋 또는 롤백이 실행되지 않을 수 있습니다.
대부분의 경우 쿼리를 실행할 때 시작 및 커밋 횟수가 일치하지 않는 것으로 보이지만 일반적으로 무시됩니다.
이 경우 DB는 트랜잭션을 계속 실행하고 DB 잠금을 가져가므로 다른 사용자가 사용할 수 없는 상황이 발생합니다.
이 경우 복구하는 가장 쉬운 방법은 정규화는 트랜잭션 ID를 조회하고 KILL 명령을 실행하여 수행할 수 있지만 이 시점에서 처리 중인 데이터가 손실될 수 있습니다.
DBCC OPENTRAN — 현재 트랜잭션에 대한 정보 열기
KILL SPID — 트랜잭션을 강제 종료하는 구문(SPID의 서버 프로세스 ID 입력)
예제 구문)
DBCC 오픈트랜 실행
-> 킬 54 실행
-> 트랜잭션 강제 종료