다음을 통해 공유


JetIndexRecordCount 함수

적용 대상: Windows | Windows Server

JetIndexRecordCount 함수

JetIndexRecordCount 함수는 현재 위치부터 현재 인덱스의 항목 수를 계산합니다. 현재 위치는 개수에 포함됩니다. 현재 인덱스가 다중값 열을 초과하고 열의 인스턴스에 여러 값이 있는 경우 테이블의 총 레코드 수보다 클 수 있습니다. 테이블이 비어 있으면 개수에 대해 0이 반환됩니다.

    JET_ERR JET_API JetIndexRecordCount(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         unsigned long* pcrec,
      __in          unsigned long crecMax
    );

매개 변수

sesid

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

tableid

이 호출에 사용할 커서입니다.

pcrec

개수를 받을 부호 없는 long 값에 대한 포인터입니다.

crecMax

계산할 최대 레코드 수입니다. crecMax 값이 0이면 개수가 무제한임을 나타냅니다.

반환 값

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

반환 코드

설명

JET_errSuccess

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

JET_errClientRequestToStopJetService

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

JET_errInstanceUnavailable

세션과 연결된 instance 해당 데이터의 무결성을 보호하기 위해 모든 데이터에 대한 액세스를 취소해야 하는 심각한 오류가 발생하여 작업을 완료할 수 없습니다.

Windows XP: 이 반환 값은 Windows XP에 도입되었습니다.

JET_errNoCurrentRecord

커서가 현재 레코드에 없으며 테이블이 비어 있지 않습니다.

Windows XP, Windows Server 2003, Windows 2000 Server 및 Windows 2000 Professional: 커서가 빈 인덱스 또는 인덱스 범위에 배치되면 JetIndexRecordCount 가 JET_errNoCurrentRecord 잘못 반환합니다.

JET_errNotInitialized

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

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

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

Windows XP: 이 반환 값은 Windows XP에 도입되었습니다.

JET_errTermInProgress

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

이 함수가 성공하면 현재 위치와 최대 crecMax (0이 아닌 경우)를 포함한 정확한 인덱스 항목 수가 pcrec에서 가리키는 서명되지 않은 긴 값으로 반환됩니다.

이 함수가 실패하면 precpos에 할당된 메모리가 변경되지 않습니다.

설명

테이블이 비어 있지 않으면 개수를 시작할 레코드에 커서를 배치해야 합니다. 개수에는 이 레코드가 포함되며 crecMax에서 지정된 제한까지 계산됩니다. crecMax가 0이면 인덱스가 끝날 때까지 작업이 계속 계산됩니다.

인덱스 범위를 사용하여 개수에 대한 인위적인 인덱스 끝 제한을 구성할 수 있습니다. 이러한 방식으로 인덱스의 하위 범위를 정확하게 계산할 수 있습니다. 커서는 범위의 첫 번째 행에 배치되어야 합니다. 범위 키의 끝을 만든 다음 JetSetIndexRange 를 사용하여 포함 또는 단독으로 상한 범위를 설정해야 합니다. 마지막으로, 범위를 정확히 계산하려면 JetIndexRecordCount 를 호출해야 합니다.

JetIndexRecordCount 는 트랜잭션 의미 체계를 준수하고 현재 트랜잭션 상태에서 이 특정 세션에 대해 정확한 개수를 반환합니다.

JetIndexRecordCount 는 항목을 정확히 계산하기 위해 인덱스 리프 페이지에 액세스합니다. 따라서 많은 I/O를 수행할 수 있으며 속도가 느릴 수 있습니다. crecMax 제한은 과도한 부하를 방지하는 데 사용해야 합니다. 범위가 크면 JetGetRecordPosition을 사용하여 대략적인 방식으로 범위를 계산할 수 있습니다.

Windows XP, Windows Server 2003, Windows 2000 Server 및 Windows 2000 Professional: 커서가 빈 인덱스 또는 인덱스 범위에 배치되면 JetIndexRecordCount 는 레코드 수를 0으로 반환하지 않고 JET_errNoCurrentRecord 잘못 반환합니다. 이 경우 애플리케이션이 검사 인덱스 또는 인덱스 범위가 비어 있는지 확인해야 합니다.

요구 사항

요구 사항

클라이언트

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_SESID
JET_TABLEID
JetGetRecordPosition
JetSetIndexRange
JetStopService