OLE DB에서 트랜잭션 지원

트랜잭션은 모두 성공하고 한 번에 커밋되거나(실패하는 경우) 커밋되지 않으며 전체 트랜잭션이 롤백되도록 데이터 원본에 대한 일련의 업데이트를 그룹화하거나 일괄 처리하는 방법입니다. 이 프로세스는 데이터 원본에 대한 결과의 무결성을 보장합니다.

OLE DB는 다음 세 가지 방법으로 트랜잭션을 지원합니다.

세션 및 트랜잭션의 관계

단일 데이터 원본 개체는 하나 이상의 세션 개체를 만들 수 있으며, 각 개체는 지정된 시간에 트랜잭션 범위 내부 또는 외부에 있을 수 있습니다.

세션이 트랜잭션에 들어가지 않으면 데이터 저장소의 해당 세션 내에서 수행된 모든 작업은 각 메서드 호출에서 즉시 커밋됩니다. 자동 커밋 모드 또는 암시적 모드라고도 합니다.

세션이 트랜잭션에 들어가면 데이터 저장소의 해당 세션 내에서 수행되는 모든 작업은 해당 트랜잭션의 일부이며 단일 단위로 커밋되거나 중단됩니다. 이 모드를 수동 커밋 모드라고도 합니다.

트랜잭션 지원은 공급자별로 다릅니다. 사용 중인 공급자가 트랜잭션을 지원하는 경우 중첩되지 않은 트랜잭션을 지원하고 ITransaction ITransactionLocal 입력할 수 있는 세션 개체입니다. OLE DB 템플릿 클래스 CSession 은 이러한 인터페이스를 지원하며 Visual C++에서 트랜잭션 지원을 구현하는 데 권장되는 방법입니다.

트랜잭션 시작 및 종료

소비자의 StartTransaction행 집합 개체에서 메서드 및 Abort 메서드Commit를 호출합니다.

호출 ITransactionLocal::StartTransaction 은 새 로컬 트랜잭션을 시작합니다. 트랜잭션을 시작하면 트랜잭션을 커밋할 때까지 이후 작업에 의해 위임된 변경 내용이 데이터 저장소에 적용되지 않습니다.

트랜잭션을 호출 ITransaction::Commit 하거나 ITransaction::Abort 종료합니다. Commit 는 트랜잭션 범위 내의 모든 변경 내용을 데이터 저장소에 적용합니다. Abort 는 트랜잭션 범위 내의 모든 변경 내용을 취소하고 데이터 저장소는 트랜잭션이 시작되기 전의 상태로 남게 합니다.

중첩 트랜잭션

중첩된 트랜잭션은 활성 트랜잭션이 세션에 이미 있을 때 새 로컬 트랜잭션을 시작할 때 발생합니다. 새 트랜잭션은 현재 트랜잭션 아래에 중첩된 트랜잭션으로 시작됩니다. 공급자가 중첩 트랜잭션을 지원하지 않는 경우 세션에 활성 트랜잭션이 이미 있을 때 호출 StartTransaction 하면 XACT_E_XTIONEXISTS 반환됩니다.

분산 트랜잭션

분산 트랜잭션은 분산 데이터를 업데이트하는 트랜잭션입니다. 즉, 둘 이상의 네트워크 컴퓨터 시스템에 있는 데이터입니다. 분산 시스템을 통해 트랜잭션을 지원하려면 OLE DB 트랜잭션 지원 대신 .NET Framework를 사용해야 합니다.

참고 항목

접근자 사용