맞습니다. SNAPSHOT 격리를 사용하여 트랜잭션이 시작되기 전에 일관성 있고 커밋 된 데이터를 얻으십시오.
커밋되지 않은 읽기 격리 (일명 NOLOCK 힌트)는 더티, 일관되지 않은 데이터를 읽습니다.
SNAPSHOT 격리를 사용하면 앞으로 모든 SELECT에 적용됩니다. ALTER DATABASE
이 경우 READ_COMMITTED_SNAPSHOT으로 실행하십시오.
편집 : ALTER DATABASE의 링크 + 인용문 추가 (내 굵은 글씨)
데이터베이스 레벨에서 읽기 커밋 된 스냅 샷 옵션을 활성화합니다. 사용하도록 설정하면 트랜잭션이 스냅 숏 격리를 사용하지 않는 경우에도 DML 문이 행 버전 생성을 시작합니다. 이 옵션이 활성화되면 읽기 커밋 격리 수준을 지정하는 트랜잭션은 잠금 대신 행 버전 관리를 사용합니다. 트랜잭션이 커밋 된 읽기 격리 수준 에서 실행될 때 모든 명령문은 명령문 시작시 존재하는 데이터의 스냅 샷을 봅니다.
그리고 Snapshot Isolation 사용 (굵은 글씨)
READ_COMMITTED_SNAPSHOT 데이터베이스 옵션 은 데이터베이스에서 스냅 샷 격리가 활성화 된 경우 기본 READ COMMITTED 격리 수준 의 동작을 결정 합니다. READ_COMMITTED_SNAPSHOT ON을 명시 적으로 지정하지 않으면 READ COMMITTED가 모든 암시 적 트랜잭션에 적용됩니다. 이는 READ_COMMITTED_SNAPSHOT OFF (기본값) 설정과 동일한 동작을 생성합니다. READ_COMMITTED_SNAPSHOT OFF가 적용되면 데이터베이스 엔진은 공유 잠금을 사용하여 기본 격리 수준을 적용합니다. READ_COMMITTED_SNAPSHOT 데이터베이스 옵션을 ON으로 설정하면 데이터베이스 엔진은 잠금을 사용하여 데이터를 보호하는 대신 행 버전 관리 및 스냅 샷 격리를 기본값으로 사용합니다.
예.
RCSI를 활성화하면 읽기가 일관된 데이터를 얻을 수 있으며 작성자가 차단하지 않고 읽기 커밋을 계속 사용할 수 있습니다.