JetCreateIndex2 함수
적용 대상: Windows | Windows Server
JetCreateIndex2 함수
JetCreateIndex2 함수는 특정 데이터를 신속하게 찾는 데 사용할 수 있는 ESE 데이터베이스의 데이터에 대한 인덱스를 만듭니다.
JET_ERR JET_API JetCreateIndex2(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in JET_INDEXCREATE* pindexcreate,
__in unsigned long cIndexCreate
);
매개 변수
sesid
API 호출에 사용할 데이터베이스 세션 컨텍스트입니다.
tableid
인덱스가 만들어질 테이블입니다.
pindexcreate
각각 만들 인덱스를 정의하는 JET_INDEXCREATE 구조체의 배열입니다.
cIndexCreate
pindexcreate 배열의 요소 수입니다.
Return Value
이 함수는 다음 반환 코드 중 하나를 사용하여 JET_ERR 데이터 형식을 반환합니다. 가능한 ESE 오류에 대한 자세한 내용은 확장 가능한 Storage 엔진 오류 및 오류 처리 매개 변수를 참조하세요.
반환 코드 |
설명 |
---|---|
JET_errSuccess |
작업이 성공적으로 완료되었습니다. |
JET_errCannotIndex |
에스크로 업데이트 또는 SLV 열에 대한 인덱싱을 시도했습니다(SLV 열은 더 이상 사용되지 않음). |
JET_errColumnNotFound |
존재하지 않는 열에 대해 인덱싱을 시도했습니다. 존재하지 않는 열에 대해 조건부 인덱싱을 시도하면 이 오류가 발생할 수도 있습니다. |
JET_errDensityInvalid |
이 오류는 JET_INDEXCREATE 구조체의 ulDensity 멤버가 20보다 작거나 100보다 큰 숫자로 설정된 경우 반환됩니다. |
JET_errIndexDuplicate |
두 개의 동일한 인덱스를 정의하려고 했습니다. |
JET_errIndexHasPrimary |
테이블에 대해 둘 이상의 기본 인덱스 지정을 시도했습니다. 테이블에는 정확히 하나의 기본 인덱스가 있어야 합니다. 기본 인덱스가 지정되지 않은 경우 데이터베이스 엔진에서 투명하게 인덱스가 만들어집니다. |
JET_errIndexInvalidDef |
잘못된 인덱스 정의가 지정되었습니다. 이 오류를 받을 수 있는 몇 가지 이유는 다음과 같습니다.
|
JET_errIndexTuplesInvalidLimits |
XP 이상을 Windows. JET_TUPLELIMITS 구조체가 지정되었으며 해당 제한이 지원되지 않습니다. JET_TUPLELIMITS 구조의 설명 섹션을 참조하세요. |
JET_errIndexTuplesNonUniqueOnly |
XP 이상을 Windows. 튜플 인덱스는 고유할 수 없습니다(grbit 에는 JET_bitIndexTuples 및 JET_bitIndexUnique 집합이 모두 없어야 함). |
JET_errIndexTuplesOneColumnOnly |
XP 이상을 Windows. 튜플 인덱스는 단일 열 위에만 있을 수 있습니다(즉, JET_INDEXCREATE 구조체의 grbit 멤버가 JET_bitIndexTuples 설정되고 JET_INDEXCREATE 구조체의 szKey 멤버가 둘 이상의 열을 지정함). |
JET_errIndexTuplesSecondaryIndexOnly |
XP 이상을 Windows. 튜플 인덱스는 기본 인덱스일 수 없습니다(즉, JET_INDEXCREATE 구조체의 grbit 멤버는 JET_bitIndexPrimary 및 JET_bitIndexTuples 집합을 둘 다 가질 수 없습니다). |
JET_errIndexTuplesTextColumnsOnly |
XP 이상을 Windows. 튜플 인덱스만 텍스트 또는 유니코드 열에 있을 수 있습니다. 다른 열(예: 이진 열)을 인덱싱하려고 하면 JET_errIndexTuplesTextColumnsOnly 발생합니다. |
JET_errIndexTuplesVarSegMacNotAllowed |
XP 이상을 Windows. 튜플 인덱스는 JET_INDEXCREATE 구조체의 cbVarSegMac 멤버를 설정할 수 없습니다. |
JET_errInTransaction |
트랜잭션에 있는 동안 버전 정보 없이 인덱스 만들기를 시도했습니다. |
JET_errInvalidgrbit |
JET_INDEXCREATE 구조체의 grbit 멤버에 일관되지 않은 값이 포함되어 있으므로 인덱스 정의가 잘못되었습니다. 몇 가지 가능한 이유는 다음과 같습니다.
한 번에 여러 인덱스를 만들 때(즉, cIndexCreate 매개 변수가 1보다 큰 경우) 인덱스에 다음 비트가 포함되지 않을 수 있습니다.
|
JET_errInvalidLanguageId |
잘못된 로캘 ID(LCID)가 전달되었습니다(JET_UNICODEINDEX 구조체의 lcid 멤버를 통해 JET_INDEXCREATE 구조체의 pidxunicode 멤버에 포인터가 포함되어 있거나 JET_INDEXCREATE 구조체의 lcid 멤버를 통해). |
JET_errInvalidName |
잘못된 인덱스 이름을 지정했습니다. 자세한 내용은 JET_INDEXCREATE 참조하세요. |
JET_errInvalidParameter |
잘못된 매개 변수가 API에 전달되었습니다. 이 오류가 반환될 수 있는 몇 가지 이유는 다음과 같습니다.
|
JET_errUnicodeTranslationFail |
유니코드 열을 정규화하려고 하는 동안 오류가 발생했습니다. 시스템 리소스가 부족하여 발생할 수 있습니다. |
설명
반환 값은 지정된 모든 인덱스를 성공적으로 완료할 때 JET_errSuccess.
JetCreateIndex2 는 pindexcreate에 지정된 인덱스를 반복하며, 경우에 따라 첫 번째 실패 시 중단됩니다. JET_INDEXCREATE 구조체의 오류 멤버에 JET_errSuccess 포함되어 있더라도 오류가 발생한 첫 번째 인덱스 이후의 인덱스는 시도되지 않았을 수 있습니다.
요구 사항
요구 사항 | 값 |
---|---|
클라이언트 |
Windows Vista, Windows XP 또는 Windows 2000 Professional 필요합니다. |
서버 |
Windows Server 2008, Windows Server 2003 또는 Windows 2000 Server가 필요합니다. |
머리글 |
Esent.h에서 선언되었습니다. |
라이브러리 |
ESENT.lib를 사용합니다. |
DLL |
ESENT.dll 필요합니다. |
유니코드 |
JetCreateIndex2W(유니코드) 및 JetCreateIndex2A(ANSI)로 구현됩니다. |
참고 항목
JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2