다음을 통해 공유


JetCompact 함수

적용 대상: Windows | Windows Server

JetCompact 함수

JetCompact 함수는 기존 데이터베이스의 복사본을 만듭니다. 복사본은 사용량에 최적 상태로 압축됩니다. 복사한 데이터의 데이터는 인덱스 생성 시 인덱스에 대해 선택한 측정값에 따라 압축됩니다. 이러한 방식으로 압축된 데이터는 가능한 한 조밀하게 저장될 수 있습니다. 또는 압축된 데이터는 후속 레코드 증가 또는 인덱스 삽입을 위한 공간을 예약할 수 있습니다.

    JET_ERR JET_API JetCompact(
      __in          JET_SESID sesid,
      __in          JET_PCSTR szDatabaseSrc,
      __in          JET_PCSTR szDatabaseDest,
      __in          JET_PFNSTATUS pfnStatus,
      __in_opt      JET_CONVERT* pconvert,
      __in          JET_GRBIT grbit
    );

매개 변수

sesid

이 호출에 사용할 세션입니다.

szDatabaseSrc

압축할 원본 데이터베이스입니다.

szDatabaseDest

압축된 데이터베이스에 사용할 이름입니다.

pfnStatus

데이터베이스 압축 작업을 통해 주기적으로 호출하여 진행률을 보고할 수 있는 콜백 함수입니다.

pconvert

원본 데이터베이스를 읽는 데 사용할 수 있는 대체 ESE DLL을 지정하고 데이터베이스를 이전 버전 형식에서 이후 버전 형식으로 변환하는 JetCompact 작업에 대한 선택적 매개 변수를 제공하는 데 사용되는 포인터입니다. 이 기능은 Windows Server 2003에서 중단되었습니다.

grbit

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

의미

JET_bitCompactRepair

원본 데이터베이스가 손상된 것으로 알려진 경우에 사용됩니다. 원본 데이터베이스에서 가능한 한 많은 데이터를 회수하기 위한 전체 새 동작 집합을 사용할 수 있습니다. 이 옵션 집합을 사용하여 JetCompact는 JET_errSuccess 반환할 수 있지만 원본 데이터베이스에서 만든 모든 데이터를 복사하지는 않습니다. 원본 데이터베이스의 손상된 부분에 있던 데이터는 건너뜁니다.

JET_bitCompactStats

JetCompact가 원본 데이터베이스의 통계를 DFRGINFO.TXT 파일에 덤프하도록 합니다. 통계에는 원본 데이터베이스의 각 테이블 이름, 각 테이블의 행 수, 각 테이블에 있는 모든 행의 총 크기(바이트), 레코드와 별도로 저장할 수 있을 만큼 큰 JET_coltypLongText 또는 JET_coltypLongBinary 형식의 모든 열의 총 크기(바이트)가 포함됩니다. 및 긴 값 리프 페이지 수입니다. 또한 원본 데이터베이스의 크기, 대상 데이터베이스, 데이터베이스 압축에 필요한 시간, 임시 데이터베이스 공간을 포함한 요약 통계도 모두 덤프됩니다.

반환 값

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

반환 코드

설명

JET_errSuccess

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

JET_errClientRequestToStopJetService

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

JET_errFeatureNotAvailable

NULL이 아닌 pconvert 포인터가 제공되었지만 사용 중인 ESE 버전은 변환 기능을 지원하지 않습니다. 이 기능은 Windows Server 2003 버전의 ESE에서 제거되었습니다.

JET_errInstanceUnavailable

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

JET_errInTransaction

호출 세션이 트랜잭션 내에 있습니다. JetCompact 는 트랜잭션 외부의 세션에서 호출해야 합니다.

JET_errNotInitialized

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

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

동시에 둘 이상의 스레드에 동일한 세션을 사용할 수 없습니다.

이 오류는 Windows XP 이상 릴리스에서만 반환됩니다.

JET_errTermInProgress

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

성공하면 원본 데이터베이스가 대상 데이터베이스에 복사됩니다. 대상 데이터베이스는 최적의 상태입니다. 예를 들어 모든 테이블 인덱스는 인접한 논리 디스크 공간에 있습니다. 각 인덱스 페이지는 원래 원본 데이터베이스에서 인덱스를 만들 때 구성된 양으로 채워집니다. 복구 옵션을 지정하지 않으면 모든 데이터 및 메타데이터 설정이 전체 충실도로 복사됩니다. 복구 옵션을 지정한 경우 원본 데이터베이스의 일부 데이터가 복사되지 않았을 수 있습니다.

실패 시 대상 데이터베이스가 존재할 수 있지만 원본 데이터베이스의 전체 복사본은 아닙니다.

설명

데이터베이스 압축은 데이터베이스를 이전 버전 형식에서 최신 버전으로 업그레이드하는 데도 사용됩니다. 선택적 매개 변수는 원본 데이터베이스 형식을 읽는 데 사용할 이전 버전 DLL에 대한 설명을 포함할 수 있는 구조를 포함하는 pconvert입니다. 이 기능은 Windows Server 2003에서 중단되었습니다. Windows Server 2003 이후 새 버전의 ESE는 항상 이전 버전의 데이터베이스 형식을 읽을 수 있으므로 이 기능이 필요하지 않습니다.

압축 작업 후 원하는 데이터 밀도는 테이블 및 인덱스를 만들 때 지정됩니다. 밀도는 20%에서 100% 사이여야 합니다. 데이터베이스가 주로 읽혀지고 업데이트되지 않는 경우 애플리케이션은 밀도를 100%로 설정하여 쿼리 처리 중 I/O 작업 수를 줄입니다. 그러나 레코드와 함께 저장된 데이터의 크기를 늘리는 작업으로 데이터가 자주 업데이트되거나 새 데이터가 자주 삽입되는 경우 애플리케이션은 업데이트에서 필요한 리소스를 더 자주 사용할 수 있도록 낮은 밀도를 선택합니다. 데이터베이스 압축 작업을 수행하면 애플리케이션에서 선택한 채우기에 따라 데이터베이스가 이상적으로 배치됩니다.

데이터베이스 압축은 오프라인 작업입니다. 데이터베이스를 사용하는 동안에는 수행할 수 없습니다. 따라서 일반적으로 자체적으로 데이터 집합을 제공하는 애플리케이션을 개발하는 빌드 프로세스의 일부로 수행됩니다.

오프라인 데이터베이스 압축은 데이터베이스의 모든 데이터에 영향을 줍니다. 데이터베이스의 일관성을 확인하는 수단으로 사용할 수 있습니다. 데이터베이스가 의심스러운 경우 압축할 수 있습니다. 압축에서 오류가 발견되지 않으면 데이터베이스가 ESE에 유효한 상태임을 알 수 있습니다.

요구 사항

요구 사항

클라이언트

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

서버

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

머리글

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

라이브러리

ESENT.lib를 사용합니다.

DLL

ESENT.dll 필요합니다.

유니코드

JetCompactW(유니코드) 및 JetCompactA(ANSI)로 구현됩니다.

참고 항목

JET_COLTYP
JET_ERR
JET_SESID
JetDefragment
JetStopService