JetInit 함수

적용 대상: Windows | Windows Server

JetInit 함수

JetInit 함수는 데이터베이스 엔진을 데이터베이스 파일의 애플리케이션 사용을 지원할 수 있는 상태로 만듭니다. JetSetSystemParameter를 사용하여 초기화를 위해 엔진을 이미 올바르게 구성해야 합니다. 데이터베이스 크래시 복구는 초기화 프로세스의 일부로 자동으로 수행됩니다.

JET_ERR JET_API JetInit(
  __in_out_opt  JET_INSTANCE* pinstance
);

매개 변수

pinstance

이 호출에 사용할 instance.

Windows 2000의 경우 이 매개 변수는 무시되며 항상 NULL이어야 합니다.

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

설명

JetSetSystemParameter 이외의 다른 항목에서 사용하려면 먼저 JetInit 호출을 사용하여 instance 초기화해야 합니다.

JetInit를 사용하여 instance 초기화되지 않았더라도 JetTerm 함수 호출에 의해 instance 제거됩니다. instance 데이터베이스 엔진의 복구 기능 단위입니다. 데이터베이스 파일 집합에서 데이터의 무결성을 보호하는 데 사용되는 모든 파일의 수명 주기를 제어합니다. 이러한 파일에는 검사점 파일 및 트랜잭션 로그 파일이 포함됩니다.

한 번에 만들 수 있는 최대 인스턴스 수는 jetSetSystemParameter를 호출하여 구성할 수 있는 JET_paramMaxInstances 제어됩니다. 데이터베이스 엔진이 처음으로 초기화되면 JetInit는 해당 instance 지원하는 초기 파일 집합을 만듭니다. 이러한 파일에는 검사점 파일( <이름이 JET_paramBaseName> 포함됩니다. CHK), 예약된 트랜잭션 로그 파일 집합(RES1이라는 이름) LOG 및 RES2. LOG), 초기 트랜잭션 로그 파일(명명된 <JET_paramBaseName>. LOG) 및 임시 데이터베이스 파일( JET_paramTempPath 따라 명명됨). JET_paramRecovery "꺼짐"으로 설정된 경우 검사점 파일 및 로그 파일이 만들어지지 않습니다. JET_paramMaxTemporaryTables 0으로 설정되면 임시 데이터베이스 파일이 만들어지지 않습니다. 이러한 파일은 instance 디스크의 공간을 나타내며 주의하여 관리해야 합니다. 이러한 파일이 개별적으로 또는 서로 손상되면 instance 연결된 데이터베이스에 저장된 데이터가 손실될 수 있습니다.

데이터베이스 엔진이 기존 트랜잭션 로그 파일 집합으로 초기화되면 해당 파일을 검사하여 instance 이전의 화신이 크래시로 인해 발생했는지 확인합니다. 크래시가 감지되면 크래시 복구가 자동으로 수행됩니다. 이 프로세스는 엔진의 이전 화신 중에 instance 연결된 데이터베이스를 다시 구성하고 변경 내용을 데이터베이스 파일에 다시 저장합니다. 결과는 트랜잭션이 일관된 데이터베이스가 됩니다. 데이터베이스에 대해 재생할 트랜잭션 로그 파일의 수가 많으면 이 프로세스에 상당한 시간이 걸릴 수 있습니다.

JetInit에서 크래시 복구를 수행하므로 오류가 발생할 경우 거의 모든 데이터베이스 엔진 오류가 반환될 수 있습니다. 실제로 배포에서 볼 수 있는 대부분의 오류는 데이터 손상 및 파일 잘못된 관리의 두 가지 범주로 분류됩니다. 데이터 손상은 다음과 같은 오류 또는 유사한 오류에서 가장 자주 나타납니다.

  • JET_errReadVerifyFailure

  • JET_errLogFileCorrupt

  • JET_errCheckpointCorrupt

이러한 오류는 거의 항상 하드웨어 문제로 인해 발생하므로 피할 수 없습니다. 파일 잘못된 관리는 다음 또는 유사한 오류에서 가장 자주 나타납니다.

  • JET_errMissingLogFile

  • JET_errAttachedDatabaseMismatch

  • JET_errDatabaseSharingViolation

  • JET_errInvalidLogSequence

모든 데이터베이스가 없는 로그 집합에서 복구가 실행되고 있으며(정상적인 상황에서 오류 JET_errAttachedDatabaseMismatch 반환됨) 클라이언트가 누락된 데이터베이스에도 불구하고 복구를 계속하려는 경우 JET_ bitReplayIgnoreMissingDB를 사용하여 사용 가능한 데이터베이스에 대한 복구를 계속할 수 있습니다. 이러한 오류는 애플리케이션에서 방지할 수 있습니다. 애플리케이션은 사용자 또는 다른 애플리케이션과 같은 외부 세력에 의한 조작으로부터 이러한 파일의 리포지토리를 보호해야 합니다. 애플리케이션이 instance 완전히 삭제하려는 경우 instance 연결된 모든 파일을 삭제해야 합니다. 여기에는 검사점 파일, 트랜잭션 로그 파일 및 instance 연결된 모든 데이터베이스 파일이 포함됩니다.

JetInit 함수는 Windows 2000 이상 릴리스 간에 instance 연결된 데이터베이스 파일과 관련하여 다르게 작동합니다.

Windows 2000: Windows 2000에서 해당 instance 이전 화신 중에 instance 연결된 모든 데이터베이스는 JetInit가 성공적으로 완료된 후에도 instance 연결된 상태로 유지됩니다. 나중에 데이터베이스 액세스를 보장하기 위해 JetInit 후에 JetAttachDatabase를 호출할 필요가 없습니다. JetAttachDatabase 함수가 JetInit 함수 이후에 호출되면 JET_wrnDatabaseAttached 경고가 반환됩니다. 이 경고는 데이터베이스 첨부 파일이 유지되었으며 무시될 수 있음을 나타냅니다.

Windows XP: Windows XP 이상 릴리스에서는 모든 데이터베이스가 JetInit에 의해 instance 자동으로 분리됩니다. 즉, 이 경우 JetAttachDatabase 는 항상 JetInit 이후에 호출되어야 합니다.

Windows 2000 이상 릴리스에서 실행되도록 작성된 모든 애플리케이션은 항상 JetInit 이후에 JetAttachDatabase를 호출해야 합니다. 애플리케이션이 Windows 2000에서 실행되는 경우 경우에 따라 JET_wrnDatabaseAttached 표시되어야 합니다. 자세한 내용은 JetAttachDatabase 를 참조하세요.

요구 사항

요구 사항

클라이언트

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
JET_paramMaxTemporaryTables
JET_paramRecovery
JetAttachDatabase
JetCreateInstance
JetInit3
JetSetSystemParameter