SQL Server Native Client에서 스냅샷 격리 작업

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

Important

SQL Server Native Client(약칭 SNAC)는 SQL Server 2022(16.x) 및 SSMS(SQL Server Management Studio) 19에서 제거되었습니다. SQL Server Native Client(SQLNCLI 또는 SQLNCLI11) 및 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 새 애플리케이션 개발에 권장되지 않습니다. 앞으로 새 SQL Server용 Microsoft OLE DB 드라이버(MSOLEDBSQL) 또는 최신 Microsoft ODBC Driver for SQL Server로 전환합니다. SQL Server 데이터베이스 엔진(버전 2012~2019)의 구성 요소로 제공되는 SQLNCLI의 경우 이 지원 수명 주기 예외를 참조하세요.

SQL Server 2005(9.x)는 OLTP(온라인 트랜잭션 처리) 애플리케이션에 대한 동시성을 향상시키기 위한 새로운 "스냅샷" 격리 수준을 도입했습니다. 이전 버전의 SQL Server에서는 동시성이 잠금에만 기반하여 일부 애플리케이션에 대해 차단 및 교착 상태 문제를 일으킬 수 있습니다. 스냅샷 격리는 행 버전 관리 개선에 따라 달라지며 판독기 차단 시나리오를 방지하여 성능을 향상시키기 위한 것입니다.

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

SQL Server Native Client OLE DB 공급자

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

DBPROPSET_DATASOURCEINFO

DBPROP_SUPPORTEDTXNISOLEVELS 속성에 사용되는 DBPROPVAL_TI_SNAPSHOT 값을 추가하여 스냅샷 격리 수준이 지원됨을 나타내기 위해 DBPROPSET_DATASOURCEINFO 속성 집합이 변경되었습니다. 이 새 값은 데이터베이스에서 버전 관리가 사용되었는지 여부에 관계없이 스냅샷 격리 수준이 지원됨을 나타냅니다. 다음은 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(9.x) 이전 버전의 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 기능
행 집합 속성 및 동작