다음을 통해 공유


JetRestoreInstance 함수

적용 대상: Windows | Windows Server

JetRestoreInstance 함수

JetRestoreInstance 함수는 연결된 모든 데이터베이스를 포함하여 instance 스트리밍 백업을 복원하고 복구합니다. JetBackupInstance 함수를 사용하여 만든 백업으로 작동하도록 설계되었습니다. 가장 간단하고 캡슐화된 하나의 복원 함수입니다.

Windows XP:JetRestoreInstance 는 Windows XP에 도입되었습니다.

    JET_ERR JET_API JetRestoreInstance(
      __in          JET_INSTANCE instance,
      __in          JET_PCSTR sz,
      __in_opt      JET_PCSTR szDest,
      __in          JET_PFNSTATUS pfn
    );

매개 변수

instance

이 호출에 사용할 instance 지정합니다.

Windows XP 이상 릴리스의 경우 이 매개 변수의 사용은 엔진의 작동 모드에 따라 달라집니다. 엔진이 하나의 instance 지원되는 레거시 모드(Windows 2000 호환 모드)에서 작동하는 경우 이 매개 변수는 NULL이거나 초기화의 부작용으로 생성된 전역 instance 핸들을 반환하는 NULL 또는 JET_instanceNil 포함된 유효한 출력 버퍼로 설정될 수 있습니다. 그런 다음 이 instance 핸들을 instance 사용하는 다른 API에 전달할 수 있습니다. 엔진이 다중 instance 모드에서 작동하는 경우 이 매개 변수는 초기화되는 JetCreateInstance에서 반환된 instance 핸들을 포함하는 유효한 입력 버퍼로 설정되어야 합니다.

Sz

백업이 있는 폴더입니다. 백업은 JetBackup API를 사용하여 생성되어야 합니다.

szDest

백업 집합의 데이터베이스 파일을 복사하고 복구할 폴더의 이름입니다. 이 파일을 NULL(레거시 JetRestore의 경우)으로 설정하면 데이터베이스 파일이 복사되어 원래 위치로 복구됩니다.

Pfn

복원 작업의 진행률에 대한 알림 정보로 호출될 함수에 대한 선택적 포인터입니다.

반환 값

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

반환 코드

설명

JET_errSuccess

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

JET_errAlreadyInitialized

이 instance 대해 엔진이 이미 초기화되어 작업이 실패했습니다.

JET_errInvalidLogSequence

백업 집합 및 현재 로그 경로의 로그 파일 집합이 일치하지 않습니다.

JET_errInvalidParameter

제공된 매개 변수 중 하나에 예기치 않은 값이 포함되어 있거나 다른 매개 변수의 값과 결합할 때 의미가 없는 값이 포함되어 있습니다. 이 오류는 엔진이 다중 instance 모드이고 핀스탄스가 잘못된 instance Windows XP 이상 릴리스를 참조하는 경우 JetRestoreInstance에서 반환됩니다.

JET_errInvalidPath

제공된 경로 중 일부가 잘못되어 작업이 실패했습니다(백업 경로, 대상 경로, instance 대한 로그 또는 시스템 경로).

JET_errPageSizeMismatch

엔진이 트랜잭션 로그 파일 또는 트랜잭션 로그 파일과 연결된 데이터베이스를 만드는 데 사용되는 데이터베이스 페이지 크기와 일치하지 않는 데이터베이스 페이지 크기(JET_paramDatabasePageSizeJetSetSystemParameter 사용)를 사용하도록 구성되었기 때문에 작업이 실패했습니다.

JET_errRunningInMultiInstanceMode

매개 변수가 단일 instance 모드(Windows 2000 호환 모드)를 암시하고 엔진이 이미 다중 instance 모드에 있으므로 작업이 실패했습니다.

성공하면 백업 집합의 데이터베이스 파일이 해당 위치로 복원되고 데이터베이스가 클린 트랜잭션 일관성 상태가 되도록 복구가 실행됩니다. 복구는 백업 집합의 로그 파일과 해당 파일이 있는 경우 로그 경로의 로그 파일을 재생합니다. 이 복구는 검사점 파일, 트랜잭션 로그 파일 및 해당 트랜잭션 로그 파일에서 참조하는 모든 데이터베이스를 변경합니다.

실패 시 instance 초기화되지 않은 상태로 유지됩니다. 복원을 초기화하고 데이터베이스를 복구하려는 시도에서 트랜잭션 로그 파일 및 해당 트랜잭션 로그 파일에서 참조하는 모든 데이터베이스의 상태가 변경되었을 수 있습니다.

설명

복구 프로세스는 백업 중에 instance 연결된 데이터베이스를 다시 구성하고 변경 내용을 데이터베이스 파일에 다시 저장합니다. 결과는 트랜잭션이 일관된 데이터베이스가 됩니다. 가능하면 트랜잭션 로그에서 가장 최근 변경 내용이 발견될 때까지 백업이 수행된 이후 수행된 변경 내용도 데이터베이스에 저장됩니다. 백업이 수행된 이후 생성된 트랜잭션 로그가 트랜잭션 로그 디렉터리에 여전히 있는 경우 이 작업이 가능합니다. instance 순환 로깅을 사용하도록 설정한 경우 생성된 트랜잭션 로그가 다시 사용되므로 복구에서 백업 시점까지 발생한 변경 내용을 저장할 수 있습니다. 어떤 경우든 데이터베이스에 대해 재생할 트랜잭션 로그 파일의 수가 많으면 이 프로세스에 상당한 시간이 걸릴 수 있습니다.

JetCreateInstance를 사용하여 이미 만든 instance JetRestoreInstance를 호출해야 합니다.

복구하는 동안 많은 수의 데이터베이스 페이지와 트랜잭션 로그가 사용되므로 이러한 함수에서 반환될 수 있는 전체 일련의 오류가 있습니다. 이러한 오류는 Jet_errOutOfMemory 같은 임시 리소스 할당 오류에서 JET_errReadVerifyFailure, JET_errLogFileCorrupt 또는 JET_errBadPageLink 같은 물리적 손상을 나타내는 오류에 이르기까지 발생할 수 있습니다. 이러한 오류는 거의 항상 하드웨어 문제로 인해 발생하므로 피할 수 없습니다. 파일 잘못된 관리는 JET_errMissingLogFile, JET_errAttachedDatabaseMismatch 또는 JET_errDatabaseSharingViolation 또는 JET_errInvalidLogSequence 가장 자주 나타납니다. 이러한 오류는 애플리케이션에서 방지할 수 있습니다. 애플리케이션은 사용자 또는 다른 애플리케이션과 같은 외부 세력에 의한 조작으로부터 이러한 파일의 리포지토리를 보호해야 합니다. 애플리케이션이 instance 완전히 삭제하려는 경우 instance 연결된 모든 파일을 삭제해야 합니다. 여기에는 검사점 파일, 트랜잭션 로그 파일 및 instance 연결된 모든 데이터베이스 파일이 포함됩니다.

복구의 다양한 단계에는 트랜잭션 로그 재생 진행률 및 복원의 최종 결과를 포함하여 이벤트 로그 항목이 생성됩니다.

요구 사항

요구 사항

클라이언트

Windows Vista 또는 Windows XP가 필요합니다.

서버

Windows Server 2008 또는 Windows Server 2003이 필요합니다.

머리글

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

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

유니코드

JetRestoreInstanceW(유니코드) 및 JetRestoreInstanceA(ANSI)로 구현됩니다.

참고 항목

JET_ERR
JET_GRBIT
JET_INSTANCE
JetBackup
JetBackupInstance
JetCreateInstance
JetSetSystemParameter