다음을 통해 공유


JetBeginExternalBackup 함수

적용 대상: Windows | Windows Server

JetBeginExternalBackup 함수

JetBeginExternalBackup 함수는 엔진과 데이터베이스가 온라인 상태이고 활성 상태인 동안 외부 백업을 시작합니다. JetBeginExternalBackup 은 성공적인 온라인(VSS 기반이 아닌) 백업을 실행하기 위해 호출해야 하는 일련의 함수 중 첫 번째입니다.

외부 백업을 사용하여 전체, 증분 또는 차등 백업을 구현할 수 있습니다.

백업이 트랜잭션 기록의 단일 시점과 일치하지만 정확한 시점을 제어할 수 없다는 점에서 백업은 유사합니다.

    JET_ERR JET_API JetBeginExternalBackup(
      __in          JET_GRBIT grbit
    );

매개 변수

grbit

다음 옵션 중 0개 이상을 지정하는 비트 그룹입니다.

의미

JET_bitBackupAtomic

이 플래그는 더 이상 사용되지 않습니다. 이 비트를 사용하면 JET_errInvalidgrbit 반환됩니다.

JET_bitBackupIncremental

전체 백업이 아닌 증분 백업을 만듭니다. 즉, 마지막 전체 또는 증분 백업 이후의 로그 파일만 백업됩니다.

JET_bitBackupSnapshot

다음에 사용하도록 예약됩니다. Windows XP에 대해 정의됩니다.

반환 값

이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 스토리지 엔진 오류오류 처리 매개 변수를 참조하세요.

반환 코드

설명

JET_errSuccess

작업이 성공적으로 완료되었습니다.

JET_errBackupInProgress

외부 백업 또는 스냅샷 백업이 이미 처리 중인 경우 JetBeginExternalBackup(또는 해당 변형 중 하나)이 호출될 때까지 이 오류가 반환됩니다. ESE는 한 번에 하나의 온라인 백업만 허용합니다.

JET_errBackupNotAllowedYet

instance 또는 데이터베이스 엔진은 복구 중이거나 종료 또는 종료 단계에 있습니다.

JET_errCheckpointCorrupt

전체 백업에서 검사점 파일을 읽을 수 없거나 파일을 확인할 수 없습니다.

JET_errCheckpointFileNotFound

전체 백업에서 검사점 파일을 찾을 수 없습니다.

JET_errClientRequestToStopJetService

JetStopService 호출로 인해 세션과 연결된 instance 모든 작업이 중단되었으므로 작업을 완료할 수 없습니다.

JET_errInstanceUnavailable

세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 취소해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다.

Windows XP: 이 반환 값은 Windows XP에 도입되었습니다.

JET_errInvalidBackup

순환 로깅이 활성화되고 지정된 백업 유형이 JET_bitBackupIncremental. 순환 또는 비순환 로깅을 제어하는 방법에 대한 자세한 내용은 트랜잭션 로그 오류JET_paramCircularLog 참조하세요.

JET_errInvalidgrbit

하나 이상의 grbit 멤버가 잘못되었습니다.

JET_errLoggingDisabled

복구 또는 로깅을 사용할 수 없습니다. 로깅을 사용하지 않도록 설정하면 온라인 백업을 수행할 수 없습니다. 로깅 및 복구에 대한 자세한 내용은 JET_paramRecovery.

JET_errLogWriteFail

로그가 가득 차거나 디스크 IO 오류가 발생하여 엔진이 로그 드라이브에 쓰기를 중지했습니다.

JET_errMissingFullBackup

증분 백업이 지정되었으며(JET_bitBackupIncremental 사용) 로깅 집합에 연결된 데이터베이스 중 하나에 대해 수행된 전체 백업이 아니었습니다.

JET_errNotInitialized

세션과 연결된 instance 아직 초기화되지 않았기 때문에 작업을 완료할 수 없습니다.

JET_errOutOfMemory

완료할 메모리가 부족하여 작업이 실패했습니다.

JET_errRestoreInProgress

세션과 연결된 instance 복원 작업이 진행 중이므로 작업을 완료할 수 없습니다.

JET_errRunningInMultiInstanceMode

실제로 여러 인스턴스가 이미 있는 경우 하나의 instance 지원되는 레거시 모드(Windows 2000 호환 모드)에서 엔진을 사용하려고 했기 때문에 작업이 실패했습니다.

JET_errTermInProgress

세션과 연결된 instance 종료 중이므로 작업을 완료할 수 없습니다.

함수가 성공하면 외부 백업이 시작되고 백업 상태 엔진이 초기화됩니다. 이제 후속 API를 호출하여 외부 백업 시퀀스를 완료하고 데이터베이스 파일, 데이터베이스 패치 파일(지원되는 경우) 및 로그 파일을 스트리밍하거나 읽을 수 있습니다. 외부 백업이 시작된 이벤트를 기록할 수 있습니다.

함수가 실패하면 백업 세션이 시작되지 않습니다. 다른 백업 세션이 진행 중인 경우 취소되지 않습니다.

설명

외부 백업 프로세스(JetBeginExternalBackup에서 시작)는 전체 instance 대상 디바이스에 스트림으로 퍼지 트랜잭션 온라인 백업을 허용하도록 설계되었습니다. 백업에는 JetAttachDatabase를 사용하여 instance 연결된 모든 데이터베이스 파일(전체 백업용), 연결된 데이터베이스 패치 파일(지원되는 경우) 및 마지막으로 백업 프로세스 중에 생성된 트랜잭션 로그 파일이 포함됩니다. 최종 결과는 스트림에서 복원하고, 기존 데이터베이스 및 로그 파일과 결합하고, 마지막으로 일관된 상태로 복구할 수 있는 파일 집합이 됩니다.

전체 백업에 대한 일반적인 작업 순서는 다음 호출로 구성됩니다. 먼저 JetBeginExternalBackup 이 호출되어 백업 프로세스를 시작합니다. 그런 다음 JetGetAttachInfo를 호출하여 백업해야 하는 instance 연결된 데이터베이스 목록을 가져옵니다. 이러한 각 데이터베이스에 대해 JetOpenFile 이 호출된 다음 여러 JetReadFile 호출, JetCloseFile 호출이 차례로 호출됩니다. 그런 다음 JetGetLogInfo 를 호출하여 백업할 데이터베이스 패치 및 로그 파일 목록을 가져옵니다. 이러한 각 파일에 대해 JetOpenFile, JetReadFileJetCloseFile 호출 의 또 다른 시퀀스가 만들어집니다. 그런 다음 JetTruncateLog를 사용하여 원치 않는 트랜잭션 로그 파일이 삭제됩니다. 마지막으로 JetEndExternalBackup에 대한 호출로 백업이 종료됩니다.

이 단계 집합을 수정하여 instance 증분 백업을 수행할 수도 있습니다. 증분 백업은 로그 파일을 열거하고 백업합니다. 증분 백업은 순환 로깅을 사용하도록 설정하지 않은 경우에만 가능합니다.

instance 후속 차등 백업을 수행할 수 있도록 이 단계 집합을 수정할 수도 있습니다. 차등 백업을 수행하려면 이전 전체 또는 증분 백업에서 JetTruncateLog 를 호출하지 마세요. JetTruncateLog를 호출하지 않으면 마지막 전체 또는 증분 백업과 관련하여 후속 백업이 차등되도록 설정할 수 있습니다. 차등 백업은 순환 로깅을 사용하도록 설정하지 않은 경우에만 가능합니다.

데이터베이스 패치 파일은 백업 중에 특정 상황에서 데이터베이스 페이지 이미지를 저장하는 데 사용되는 특수 보조 파일입니다. 이 파일은 복원 작업 중에 연결된 데이터베이스와 동일한 위치에 있어야 합니다. 이 파일은 Windows 2000에서만 사용됩니다. 따라서 Windows 2000 및 기타 릴리스에 대해 작동하도록 작성된 모든 애플리케이션은 데이터베이스 패치 파일이 있는 경우 데이터베이스 패치 파일을 지원해야 하지만, 없는 경우에도 실패하지 않아야 합니다.

요구 사항

요구 사항

클라이언트

Windows Vista, Windows XP 또는 Windows 2000 Professional이 필요합니다.

서버

Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다.

머리글

Esent.h에 선언되었습니다.

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

참고 항목

JET_ERR
JET_GRBIT
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackupInstance
JetCloseFile
JetEndExternalBackup
JetEndExternalBackupInstance2
JetGetAttachInfo
JetGetLogInfo
JetOpenFile
JetReadFile
JetStopBackup
JetTruncateLog