SQL Server Native Client에서 스냅샷 격리 작업
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
Important
SNAC(SQL Server Native Client)는 다음과 함께 제공되지 않습니다.
- SQL Server 2022(16.x) 이상 버전
- SQL Server Management Studio 19 이상 버전
SQL Server Native Client(SQLNCLI 또는 SQLNCLI11)와 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 새로운 응용 프로그램 개발에 권장되지 않습니다.
새 프로젝트의 경우 다음 드라이버 중 하나를 사용합니다.
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 드라이버는 SQLSetConnectAttr 및 SQLGetInfo 함수가 향상되었지만 스냅샷 격리를 지원합니다.
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 값을 지원합니다.
트랜잭션에서 스냅샷 격리를 지원하는 방법에 대한 자세한 내용은 커서 트랜잭션 격리 수준을 참조 하세요.