다음을 통해 공유


JetOpenFileInstance 함수

적용 대상: Windows | Windows Server

JetOpenFileInstance 함수

JetOpenFileInstance 함수는 스트리밍 유사 항목 백업을 수행하기 위해 활성 instance 연결된 데이터베이스, 데이터베이스 패치 파일 또는 트랜잭션 로그 파일을 엽니다. 이러한 파일의 데이터는 나중에 JetReadFileInstance를 사용하여 반환된 핸들을 통해 읽을 수 있습니다. JetCloseFileInstance를 사용하여 반환된 핸들을 닫아야 합니다. 이전에 JetBeginExternalBackupInstance를 사용하여 instance 외부 백업을 시작했어야 합니다.

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

    JET_ERR JET_API JetOpenFileInstance(
      __in          JET_INSTANCE instance,
      __in          JET_PCSTR szFileName,
      __out         JET_HANDLE* phfFile,
      __out         unsigned long* pulFileSizeLow,
      __out         unsigned long* pulFileSizeHigh
    );

매개 변수

instance

이 호출에 사용할 instance.

Windows 2000의 경우 instance 하나만 지원되므로 이 매개 변수를 허용하는 API 변형을 사용할 수 없습니다. 이 하나의 전역 instance 사용하는 것은 이 경우에 암시됩니다.

Windows XP 이상 릴리스의 경우 이 매개 변수를 허용하지 않는 API 변형은 엔진이 하나의 instance 지원되는 레거시 모드(Windows 2000 호환 모드)에 있을 때만 호출될 수 있습니다. 그렇지 않으면 JET_errRunningInMultiInstanceMode 작업이 실패합니다.

szFileName

연결된 데이터베이스, 데이터베이스 패치 파일 또는 백업을 위해 읽은 instance 관리되는 트랜잭션 로그 파일에 대한 상대 또는 절대 경로입니다.

phfFile

읽을 파일에 대한 핸들을 받는 출력 버퍼에 대한 포인터입니다.

pulFileSizeLow

파일 크기의 최소 32비트 를 수신하는 출력 버퍼에 대한 포인터입니다.

pulFileSizeHigh

파일 크기의 가장 중요한 32비트 를 수신하는 출력 버퍼에 대한 포인터입니다.

반환 값

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

반환 코드

설명

JET_errSuccess

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

JET_errBackupAbortByServer

현재 외부 백업이 JetStopBackupInstance 호출에 의해 중단되었기 때문에 작업이 실패했습니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errClientRequestToStopJetService

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

JET_errFileAccessDenied

공유 위반 또는 권한 부족으로 인해 요청된 파일을 열 수 없으므로 작업이 실패했습니다.

JET_errFileNotFound

지정된 경로에서 찾을 수 없으므로 요청된 파일을 열 수 없어 작업이 실패했습니다. 이 오류는 Windows 2000에서만 반환됩니다.

JET_errInvalidBackupSequence

백업 작업이 시퀀스에서 호출되었기 때문에 실패했습니다.

JET_errInvalidPath

지정된 경로를 찾을 수 없어 작업이 실패했습니다.

JET_errInstanceUnavailable

세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 해지해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errInvalidParameter

제공된 매개 변수 중 하나에 예기치 않은 값이 포함되어 있거나 다른 매개 변수의 값과 결합할 때 의미가 없는 값이 포함되어 있습니다. JetOpenFileInstance의 경우 다음과 같은 경우에 발생할 수 있습니다.

  • 지정한 instance 핸들이 잘못되었습니다(Windows XP 이상 릴리스).

  • 지정된 filename 매개 변수는 NULL 또는 길이가 0인 문자열(Windows XP 이상 릴리스)입니다.

JET_errMissingFileToBackup

요청된 파일을 찾을 수 없으므로 백업을 위해 열 수 없습니다. 이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errNoBackup

외부 백업이 진행 중이 아니므로 작업이 실패했습니다.

JET_errNotInitialized

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

JET_errOutOfMemory

완료할 메모리가 부족하여 작업이 실패했습니다. JetOpenFileInstance를 사용하여 연 이전 파일이 JetCloseFileInstance에 의해 닫혀 있기 전에 다른 파일을 열려고 하면 JetOpenFileInstance가 JET_errOutOfMemory 반환합니다. 현재는 미해결 파일 핸들 하나만 지원됩니다.

JET_errRestoreInProgress

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

JET_errRunningInMultiInstanceMode

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

JET_errTermInProgress

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

성공하면 요청된 파일에 대한 핸들이 반환됩니다. 핸들이 데이터베이스 파일에 대한 경우 해당 데이터베이스 파일은 데이터베이스 파일과 동일한 위치에 데이터베이스 패치 파일을 만들 수 있는 스트리밍 백업에 대해 준비됩니다. 데이터베이스 패치 파일의 경로와 파일 이름은 데이터베이스 파일과 정확히 동일하지만 은 입니다. PAT 확장. 파일의 크기도 반환됩니다.

실패 시 출력 버퍼의 상태가 정의되지 않습니다. 디스크에 데이터베이스 패치 파일을 일시적으로 만들 수 있으며 패치 파일 위치에 있는 기존 파일이 삭제될 수 있습니다. 실패하면 instance 대한 전체 백업 프로세스가 취소됩니다. Windows XP 이상 릴리스에서는 호출 시 instance 연결되지 않은 데이터베이스를 백업하려고 하면 백업이 취소되지 않습니다.

경고 보안상의 이유로 JetOpenFileInstance는 요청된 파일 경로가 instance 백업된 파일 집합과 연결되어 있는지 확인하지 않습니다. 따라서 이 함수를 사용하여 스레드의 현재 보안 컨텍스트에서 열 수 있는 모든 파일에 액세스할 수 있습니다. 애플리케이션은 이 함수에 전달된 경로를 알려진 올바른 파일 경로 집합으로 제한하거나 정보 공격을 공개할 수 있어야 합니다.

설명

핸들 및 파일 크기 출력 버퍼가 있어야 합니다. 출력 버퍼 매개 변수의 유효성이 검사되지 않아 엔진이 충돌합니다.

현재 백업을 위해 한 번에 하나의 파일만 열 수 있습니다.

JetOpenFileInstance 는 요청된 파일을 열기 전에 백업 권한을 어설션하지 않습니다.

이 함수에서 보고한 대로 읽을 파일의 크기가 디스크의 파일 크기와 일치하지 않을 수 있습니다. Windows XP 이상 릴리스에서는 복원 작업 중에 데이터베이스 엔진에서 사용하는 데이터베이스 파일에 추가 정보가 추가될 수 있습니다. 따라서 애플리케이션은 JetOpenFileInstance 에서 반환된 파일 크기 또는 JetReadFileInstance에서 반환된 데이터의 실제 바이트 수에만 의존해야 합니다.

요구 사항

요구 사항

클라이언트

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

서버

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

머리글

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

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

유니코드

JetOpenFileInstanceW(유니코드) 및 JetOpenFileInstanceA(ANSI)로 구현됩니다.

참고 항목

JET_ERR
JET_HANDLE
JET_INSTANCE
JetAttachDatabase
JetBeginExternalBackupInstance
JetCloseFileInstance
JetGetAttachInfoInstance
JetGetLogInfoInstance
JetReadFileInstance
JetStopBackupInstance
JetTruncateLogInstance