다음을 통해 공유


스냅숏 격리 작업

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

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

SQL Server의 스냅숏 격리 지원에 대한 자세한 내용은 행 버전 관리 기반 격리 수준 이해를 참조하십시오.

SQL Server Native Client OLE DB 공급자

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

DBPROPSET_DATASOURCEINFO

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

속성 ID

설명

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

설명

DBPROP_SESS_AUTOCOMMITISOLEVELS

유형: VT_I4

R/W: 읽기 전용

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

[!참고]

SQL Server 2005보다 이전 버전의 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 값을 지원합니다.

스냅숏 격리가 트랜잭션에서 지원되는 방법은 커서 트랜잭션 격리 수준을 참조하십시오.