2010-06-23 3 views
0

다음과 같은 문제가 있습니다 : 트랜잭션 (기본 ADO.NET 트랜잭션) 내부에 테이블 (예 : 'temp')에 행을 삽입하고 있습니다. 해당 트랜잭션이 커밋 될 때까지 다른 세션 (SQL Server 2008 관리 스튜디오)에서 실행되는 'select * from temp'명령이 차단되어 완료 할 수 없습니다.SQL Server 트랜잭션 : 삽입으로 인해 잠금이 발생합니까?

이것은 나에게 이상한 것 같습니다. read 명령은 이전의 모든 테이블 행 (새로 삽입 된 행을 제외한 모든 항목)을 반환하고 차단되지 않아야합니까?

답변

2

SQL Server의 기본 동작은 잠금을 취하는 것이며 트랜잭션이 커밋 될 때까지 해제되지 않습니다.

READPAST hint (잠긴 행은 건너 뜁니다), READ UNCOMMITTED 격리 수준 (또는 NOLOCK 힌트) (새로 삽입 된 행을 포함하여 모든 행을 반환합니다) , 또는 SNAPSHOT isolation level - 스냅 샷이 작동하려면 서버 수준이

+0

이거나 4) READ_COMMITTED_SNAPSHOT가 OP에서 예상 한 동작입니다 –

관련 문제