MSSQLSERVER_1205
새 설치: 2006년 7월 17일
세부 정보
제품 이름 |
SQL Server |
제품 버전 |
9.0 |
제품 빌드 번호 |
9.00.1281.60 |
이벤트 ID |
1205 |
이벤트 원본 |
MSSQLSERVER |
구성 요소 |
SQLEngine |
심볼 이름 |
LK_VICTIM |
메시지 텍스트 |
트랜잭션(프로세스 ID %d)이 %.*ls 리소스에서 다른 프로세스와의 교착 상태가 발생하여 실행이 중지되었습니다. 트랜잭션을 다시 실행하십시오. |
설명
분리된 트랜잭션에서 리소스에 액세스하는 순서가 적절하지 못하여 교착 상태가 발생합니다. 예를 들어 다음과 같습니다.
- Transaction2가 Table2.Row2를 업데이트하는 동안 Transaction1이 Table1.Row1을 업데이트합니다.
- Transaction1이 Table2.Row2의 업데이트를 시도하지만 Transaction2가 커밋되지 않아 차단됩니다.
- 이제 Transaction2가 Table1.Row1의 업데이트를 시도하지만 Transaction1이 커밋되지 않아 차단됩니다.
- Transaction1은 Transaction2가 완료되기를 기다리지만 Transaction2는 Transaction1이 완료되기를 기다리므로 교착 상태가 발생합니다.
시스템이 이 교착 상태를 발견하고 교착 상태가 발생한 트랜잭션 중 하나를 선택하여 이 메시지를 표시한 후 선택한 트랜잭션을 롤백합니다. 교착 상태에 대한 자세한 내용은 교착 상태를 참조하십시오.
사용자 작업
트랜잭션을 다시 실행하십시오. 교착 상태가 발생하지 않도록 응용 프로그램을 수정할 수도 있습니다. 교착 상태가 발생한 트랜잭션을 다시 실행하면 동시에 실행 중인 작업이 무엇인지에 따라 성공할 수도 있습니다.
교착 상태를 방지하거나 발생하지 않도록 하려면 모든 트랜잭션이 동일한 순서(Table1에 액세스한 뒤 Table2에 액세스)로 행에 액세스하도록 하십시오. 이렇게 하면 차단이 발생할 수는 있으나 교착 상태는 발생하지 않습니다. 수행할 수 있는 작업에 대한 자세한 내용은 교착 상태 검색 및 종료를 참조하십시오.