JetCommitTransaction2 함수
적용 대상: Windows | Windows Server
JetCommitTransaction2 함수는 현재 저장 지점 동안 데이터베이스 상태에 대한 변경 내용을 커밋하고 이전 저장 지점으로 마이그레이션합니다. 가장 바깥쪽 저장 지점이 커밋되면 해당 저장 지점 동안 변경된 내용이 데이터베이스의 상태로 커밋되고 세션이 트랜잭션을 종료합니다.
JetCommitTransaction2 함수는 Windows 8 운영 체제에 도입되었습니다.
JET_ERR JET_API JetCommitTransaction2(
__in JET_SESID sesid,
__in JET_GRBIT grbit,
__in DWORD cmsecDurableCommit,
__out JET_COMMIT_ID pCommitID
);
매개 변수
sesid
이 호출에 사용할 세션입니다.
grbit
다음 표에 나열된 값 중 0개 이상을 지정하는 비트 그룹입니다.
값 |
의미 |
---|---|
JET_bitCommitLazyFlush |
트랜잭션은 정상적으로 커밋되지만 이 API는 트랜잭션이 호출자에게 반환되기 전에 트랜잭션 로그 파일로 플러시될 때까지 기다리지 않습니다. 이렇게 하면 내구성을 희생하여 커밋 작업 기간이 크게 줄어듭니다. 충돌 전에 로그에 플러시되지 않은 트랜잭션은 JetInit 함수에 대한 다음 호출 중에 크래시 복구 중에 자동으로 중단됩니다. JET_bitWaitLastLevel0Commit 또는 JET_bitWaitAllLevel0Commit 지정하면 이 옵션은 무시됩니다. JetCommitTransaction2에 대한 이 호출이 이 세션의 JetBeginTransaction 함수에 대한 첫 번째 호출과 일치하지 않으면 이 옵션은 무시됩니다. 가장 바깥쪽 저장 지점에서 발생하는 최종 작업이 전체 트랜잭션이 실제로 디스크에 커밋되는지 여부를 결정하는 요인이기 때문입니다. |
JET_bitWaitAllLevel0Commit |
트랜잭션 로그 파일에 아직 플러시되지 않은 모든 세션에서 이전에 커밋한 모든 트랜잭션은 즉시 플러시됩니다. 이 API는 트랜잭션이 플러시될 때까지 기다렸다가 호출자에게 돌아갑니다. 세션이 현재 트랜잭션에 없는 경우에도 이 옵션을 사용할 수 있습니다. 이 옵션은 다른 옵션과 함께 사용할 수 없습니다. 이 옵션은 Windows Server 2003부터 Windows Server 운영 체제 버전에서 사용할 수 있습니다. |
JET_bitWaitLastLevel0Commit |
세션이 이전에 트랜잭션을 커밋했으며 아직 트랜잭션 로그 파일로 플러시되지 않은 경우 즉시 플러시되어야 합니다. 이 API는 트랜잭션이 플러시될 때까지 기다렸다가 호출자에게 돌아갑니다. 이는 애플리케이션이 이전에 JET_bitCommitLazyFlush 사용하여 여러 트랜잭션을 커밋했으며 이제 모든 트랜잭션을 디스크로 플러시하려는 경우에 유용합니다. 세션이 현재 트랜잭션에 없는 경우에도 이 옵션을 사용할 수 있습니다. 이 옵션은 다른 옵션과 함께 사용할 수 없습니다. |
cmsecDurableCommit
지연 트랜잭션을 커밋하는 기간입니다.
pCommitID
이 커밋 레코드와 연결된 Commit-ID입니다.
반환 값
이 함수는 다음 표에 나열된 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE(확장 가능한 스토리지 엔진) 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류 및 오류 처리 매개 변수를 참조하세요.
반환 코드 |
설명 |
---|---|
JET_errSuccess |
작업이 성공적으로 완료되었습니다. |
JET_errClientRequestToStopJetService |
JetStopService 함수 호출로 인해 세션과 연결된 instance 모든 작업이 중단되었으므로 작업을 완료할 수 없습니다. |
JET_errInstanceUnavailable |
세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 해지해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다. 이 오류는 Windows XP부터 Windows 운영 체제 버전에서만 반환됩니다. |
JET_errInvalidgrbit |
요청된 옵션 중 하나가 잘못되었거나 구현되지 않았습니다. 이 오류는 다음이 발생할 때 JetCommitTransaction2 함수에서 반환됩니다.
|
JET_errNotInitialized |
세션과 연결된 instance 아직 초기화되지 않았기 때문에 작업을 완료할 수 없습니다. |
JET_errNotInTransaction |
지정된 세션이 트랜잭션에 없기 때문에 작업이 실패했습니다. |
JET_errRestoreInProgress |
세션과 연결된 instance 복원 작업이 진행 중이므로 작업을 완료할 수 없습니다. |
JET_errSessionSharingViolation |
동시에 둘 이상의 스레드에 동일한 세션을 사용할 수 없습니다. 이 오류는 Windows XP부터 Windows 운영 체제 버전에서만 반환됩니다. |
JET_errTermInProgress |
세션과 연결된 instance 종료 중이므로 작업을 완료할 수 없습니다. |
성공하면 지정된 세션의 현재 저장 지점 동안 데이터베이스에 대한 변경 내용이 커밋되고 해당 저장 지점이 종료됩니다. 세션의 마지막 저장 지점이 종료된 경우 트랜잭션은 필요에 따라 트랜잭션 로그 파일로 플러시되고 세션은 트랜잭션을 종료합니다.
실패 시 세션의 트랜잭션 상태는 변경되지 않은 상태로 유지됩니다. 데이터베이스 상태는 변경되지 않습니다. 애플리케이션은 JetRollback 함수를 호출하여 트랜잭션을 중단해야 합니다.
설명
지정된 세션에 대한 JetBeginTransaction에 대한 모든 호출과 일치하려면 JetCommitTransaction2 또는 JetRollback을 한 번 호출해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
클라이언트 |
Windows 8 필요합니다. |
서버 |
Windows Server 2012 필요합니다. |
머리글 |
Esent.h에 선언되었습니다. |
라이브러리 |
ESENT.lib를 사용합니다. |
DLL |
ESENT.dll 필요합니다. |
추가 정보
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction
JetCommitTransaction
JetRollback
JetStopService