커서 트랜잭션 격리 수준
특정 커서의 트랜잭션 잠금 동작은 커서 동시성 설정의 잠금 동작, SELECT 커서에 지정된 잠금 힌트 및 트랜잭션 격리 수준 옵션을 통해 결정됩니다.
MicrosoftSQL Server에서는 다음과 같은 커서 트랜잭션 격리 수준이 지원됩니다.
커밋된 읽기
SQL Server에서 행을 커서로 읽는 동안 공유 잠금을 획득하지만 행을 읽고 난 직후에 잠금을 해제합니다. 공유 잠금 요청은 배타적 잠금에 의해 차단되므로 다른 태스크가 업데이트했지만 아직 커밋하지 않은 행을 커서가 읽을 수 없습니다. 커밋된 읽기는 SQL Server와 ODBC 모두에 대한 기본 격리 수준 설정입니다.커밋되지 않은 읽기
SQL Server에서 행을 커서로 읽는 동안 잠금을 요청하지 않으며 배타 잠금을 보장하지 않습니다. 업데이트되었지만 아직 커밋되지 않은 값으로 커서를 채울 수 있습니다. SQL Server의 모든 잠금 트랜잭션 제어 메커니즘이 무시됩니다.반복 읽기 또는 순차 가능
SQL Server에서 READ COMMITTED 등을 통해 커서로 행을 읽을 때 각 행에 대해 공유 잠금을 요청합니다. 그러나 트랜잭션 내에 커서가 열려 있으면 행을 읽은 후 해제하지 않고 트랜잭션이 끝날 때까지 공유 잠금을 보유합니다. 이렇게 하면 SELECT 문에서 HOLDLOCK을 지정하는 것과 같은 결과가 나타납니다.스냅숏
SQL Server에서 행을 커서로 읽는 동안 잠금을 요청하지 않으며 배타 잠금을 보장하지 않습니다. 트랜잭션이 처음 시작된 당시의 값으로 커서가 채워집니다. 스크롤 잠금은 스냅숏 격리의 사용과 관계없이 요청됩니다.