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)로 구현됩니다. |