실제로 발생하는 차단을 추적하는 데 문제가 있습니다.
루트 차단 SPID의 상태는 'sleeping'이고 cmd는 'AWAITING COMMAND'이며 sqltext
is SET TRANSACTION ISOLATION LEVEL READ COMMITTED
입니다.
차단 된 트랜잭션 수별 상위 트랜잭션 보고서를 볼 때 차단 SQL 문은 '-'입니다.
SQL에 대한 추적을 수행했으며 차단이 루트 차단 SPID를 추적 할 때 실제로 어디서나 나를 이끌지 못했습니다. 마지막 추적 명령문은 sqltext
위와 동일합니다 SET TRANSACTION ISOLATION LEVEL READ COMMITTED
.
TRY / CATCH BEGIN TRAN / COMMIT TRAN / ROLLBACK TRAN 문이 있는지 확인할 수있는 모든 관련 저장 프로 시저를 확인했습니다 (우리는 실행중인 독립 문이 없도록 모든 것에 대해 저장 프로 시저를 사용합니다). 이 문제는 지난 24 시간 동안 발생하기 시작했으며 아무도 시스템을 변경했다고 주장하지 않습니다.
해결책 : 거의 사용되지 않는 저장 프로 시저 중 하나에 삽입 오류 (열 수가 일치하지 않음)가 있었지만 여전히 정확히 무슨 일이 일어나고 있는지 혼란 스럽습니다.
모든 추적 정보를 볼 때이 저장 프로 시저에 대한 EXEC 문이 때때로 나열되었지만 차단 SPID에서 BLOCK이 발생하기 직전에 절대로 없었습니다. 블로킹을 시작할 때 추적이 실행을 기록하지 않은 것 같습니다 (또는 그 안의 명령문 중 하나). 그러나 추적이 실행을 기록하고 차단이 발생하지 않은 다른 시간이 있습니다.
저장 프로 시저 오류 보고서는 사용자가 제공 한 것으로 여러 EXEC 문을 추적하여 SSMS에서 실행할 수있었습니다. 내가 그들을 실행했을 때 우리는 막히지 않았거나 멈추지 않았습니다. 예상대로 실행되었습니다 (캐치 블록이 시작되고 오류가 발생한 후 트랜잭션을 롤백했습니다). 저장 프로 시저 수정을 해결 한 후에도 문제가 다시 나타나지 않습니다.