다음을 통해 공유


스냅샷 격리 작업

SQL Server 2005에는 OLTP(온라인 트랜잭션 처리) 애플리케이션에 대한 동시성을 향상시키기 위한 새로운 "스냅샷" 격리 수준이 도입되었습니다. 이전 버전의 SQL Server에서는 동시성이 일부 애플리케이션에 대해 문제 차단 및 교착 상태를 발생시킬 수 있는 잠금 기능에만 의존했습니다. 스냅샷 격리는 향상된 행 버전 관리 기능을 사용하며 읽기/쓰기 차단 시나리오를 방지하여 성능을 향상시킵니다.

스냅샷 격리 하에 시작된 트랜잭션은 트랜잭션이 시작된 시간을 기준으로 데이터베이스 스냅샷을 읽습니다. 그 결과, 스냅샷 트랜잭션 컨텍스트 내에서 열린 키 집합 동적 및 정적 서버 커서가 직렬화 가능 트랜잭션 내에서 열린 정적 커서처럼 동작합니다. 하지만 스냅샷 격리 수준 하에서 커서를 열면 잠금이 수행되지 않아 서버의 차단을 줄일 수 있습니다.

SQL Server Native Client OLE DB 공급자

SQL Server Native Client OLE DB 공급자는 2005년 SQL Server 도입된 스냅샷 격리를 활용하는 향상된 기능을 제공합니다. 이러한 향상된 기능에는 DATASOURCEINFO 및 DBPROPSET_SESSION 속성 집합의 변경 내용이 포함됩니다.

DBPROPSET_DATASOURCEINFO

DBPROPSET_DATASOURCEINFO 속성 집합은 DBPROP_SUPPORTEDTXNISOLEVELS 속성에 사용되는 DBPROPVAL_TI_SNAPSHOT 값을 추가하여 스냅샷 격리 수준이 지원됨을 나타내도록 변경되었습니다. 이 새로운 값은 데이터베이스에 버전 관리가 설정되어 있는지 여부에 관계없이 스냅샷 격리 수준이 지원됨을 나타냅니다. 다음은 DBPROP_SUPPORTEDTXNISOLEVELS 값의 목록입니다.

속성 ID Description
DBPROP_SUPPORTEDTXNISOLEVELS 유형: VT_I4

R/W: 읽기 전용

설명: 지원되는 트랜잭션 격리 수준을 지정하는 비트 마스크입니다. 다음을 0개 이상 조합하여 지정합니다.

- DBPROPVAL_TI_CHAOS
- DBPROPVAL_TI_READUNCOMMITTED
- DBPROPVAL_TI_BROWSE
- DBPROPVAL_TI_CURSORSTABILITY
- DBPROPVAL_TI_READCOMMITTED
- DBPROPVAL_TI_REPEATABLEREAD
- DBPROPVAL_TI_SERIALIZABLE
- DBPROPVAL_TI_ISOLATED
- DBPROPVAL_TI_SNAPSHOT

DBPROPSET_SESSION

DBPROPSET_SESSION 속성 집합은 DBPROP_SESS_AUTOCOMMITISOLEVELS 속성에 사용되는 DBPROPVAL_TI_SNAPSHOT 값을 추가하여 스냅샷 격리 수준이 지원됨을 나타내도록 변경되었습니다. 이 새로운 값은 데이터베이스에 버전 관리가 설정되어 있는지 여부에 관계없이 스냅샷 격리 수준이 지원됨을 나타냅니다. 다음은 DBPROP_SESS_AUTOCOMMITISOLEVELS 값의 목록입니다.

속성 ID Description
DBPROP_SESS_AUTOCOMMITISOLEVELS 유형: VT_I4

R/W: 읽기 전용

설명: 자동 커밋 모드에서 트랜잭션 격리 수준을 나타내는 비트 마스크를 지정합니다. 이 비트 마스크에 설정할 수 있는 값은 DBPROP_SUPPORTEDTXNISOLEVELS에 설정할 수 있는 값과 같습니다.

참고

2005년 SQL Server 이전 버전의 SQL Server 사용할 때 DBPROPVAL_TI_SNAPSHOT 설정된 경우 DB_S_ERRORSOCCURRED 또는 DB_E_ERRORSOCCURRED 오류가 발생합니다.

스냅샷 격리가 트랜잭션에서 지원되는 방법은 로컬 트랜잭션 지원을 참조하세요.

SQL Server Native Client ODBC 드라이버

SQL Server Native Client ODBC 드라이버는 SQLSetConnectAttrSQLGetInfo 함수에 대한 향상된 기능을 통해 스냅샷 격리를 지원합니다.

SQLSetConnectAttr

SQLSetConnectAttr 함수는 이제 SQL_COPT_SS_TXN_ISOLATION 특성의 사용을 지원합니다. SQL_COPT_SS_TXN_ISOLATION을 SQL_TXN_SS_SNAPSHOT으로 설정하면 스냅샷 격리 수준에서 트랜잭션이 실행됩니다.

SQLGetInfo

이제 SQLGetInfo 함수는 SQL_TXN_ISOLATION_OPTION 정보 형식에 추가된 SQL_TXN_SS_SNAPSHOT 값을 지원합니다.

트랜잭션에서 스냅샷 격리가 지원되는 방법에 대한 자세한 내용은 커서 트랜잭션 격리 수준을 참조하세요.

참고 항목

SQL Server Native Client 기능
행 집합 속성 및 동작