JetCreateIndex3-Funktion

Gilt für: Windows | Windows Server

JetCreateIndex3-Funktion

Die JetCreateIndex3-Funktion erstellt Indizes für Daten in einer ESE-Datenbank, die verwendet werden können, um bestimmte Daten schnell zu finden.

Windows 7: JetCreateIndex3 wird im Windows 7-Betriebssystem eingeführt.

    JET_ERR JET_API JetCreateIndex3(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in          JET_INDEXCREATE2* pindexcreate,
      __in          unsigned long cIndexCreate
    );

Parameter

sesid

Der Datenbanksitzungskontext, der für den API-Aufruf verwendet werden soll.

tableid

Die Tabelle, für die der Index erstellt wird.

pindexcreate

Ein Array von JET_INDEXCREATE2 Strukturen, von denen jede einen zu erstellenden Index definiert.

cIndexCreate

Die Anzahl der Elemente im pindexcreate-Array .

Rückgabewert

Diese Funktion gibt den datentyp JET_ERR mit einem der folgenden Rückgabecodes zurück. Weitere Informationen zu möglichen ESE-Fehlern finden Sie unter Erweiterbare Speichermodulfehler und Fehlerbehandlungsparameter.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errCannotIndex

Es wurde versucht, eine Escrow-Update- oder SLV-Spalte zu indizieren (beachten Sie, dass SLV-Spalten veraltet sind).

JET_errColumnNotFound

Es wurde versucht, eine nicht vorhandene Spalte zu indizieren. Der Versuch, eine nicht vorhandene Spalte bedingt indizieren zu lassen, kann auch zu diesem Fehler führen.

JET_errDensityInvalid

Dieser Fehler wird zurückgegeben, wenn das ulDensity-Element der JET_INDEXCREATE2-Struktur auf eine Zahl kleiner als 20 oder größer als 100 festgelegt ist.

JET_errIndexDuplicate

Es wurde versucht, zwei identische Indizes zu definieren.

JET_errIndexHasPrimary

Es wurde versucht, mehr als einen primären Index für eine Tabelle anzugeben. Eine Tabelle muss genau einen primären Index aufweisen. Wenn kein primärer Index angegeben ist, erstellt die Datenbank-Engine einen transparenten Index.

JET_errIndexInvalidDef

Es wurde eine ungültige Indexdefinition angegeben. Im Folgenden sind einige mögliche Gründe für den Empfang dieses Fehlers aufgeführt:

  • Ein primärer Index ist bedingt (grbit-Member von JET_INDEXCREATE2 ist JET_bitIndexPrimary festgelegt, und das cConditionalColumn-Element von JET_INDEXCREATE2 ist größer als 0).

  • Windows Server 2003 und höhere Versionen von Windows. Der Versuch, einen Tupelindex mit Tupelgrenzwerten zu erstellen, ohne jedoch Informationen im ptuplelimits-Element in JET_INDEXCREATE2 zu übergeben (d. h. grbit hat JET_bitIndexTupleLimits festgelegt, aber der ptuplelimits-Zeiger ist NULL).

  • Übergeben einer ungültigen Schlüsseldefinition im szKey-Member der JET_INDEXCREATE2-Struktur . Eine Erläuterung gültiger Definitionen finden Sie unter JET_INDEXCREATE2 .

  • Festlegen des cbVarSegMac-Elements in JET_INDEXCREATE2 größer als JET_cbPrimaryKeyMost (für einen primären Index) oder größer als JET_cbSecondaryKeyMost (für einen sekundären Index).

  • Übergeben einer ungültigen Kombination für einen benutzerdefinierten Unicode-Index (für den das JET_bitIndexUnicode Bit im grbit-Element von JET_INDEXCREATE2 festgelegt ist). Einige häufige Ursachen können sein, dass das Pidxunicode-Feld der JET_INDEXCREATE2-Struktur NULL ist, oder dass die in der pidxunicode-Struktur angegebene LCID ungültig ist.

  • Angeben einer mehrwertigen Spalte für einen primären Index.

  • Versucht, zu viele bedingte Spalten zu indizieren. Das cConditionalColumn-Element der JET_INDEXCREATE2-Struktur darf nicht größer als JET_ccolKeyMost sein.

JET_errIndexTuplesInvalidLimits

Windows XP und höhere Versionen von Windows. Es wurde eine JET_TUPLELIMITS-Struktur angegeben, deren Grenzwerte nicht unterstützt werden. Weitere Informationen finden Sie im Abschnitt "Hinweise" der JET_TUPLELIMITS-Struktur .

JET_errIndexTuplesNonUniqueOnly

Windows XP und höhere Versionen von Windows. Ein Tupelindex kann nicht eindeutig sein (grbit darf nicht sowohl JET_bitIndexTuples als auch JET_bitIndexUnique festgelegt haben).

JET_errIndexTuplesOneColumnOnly

Windows XP und höhere Versionen von Windows. Ein Tupelindex kann sich nur über einer einzelnen Spalte befinden (das heißt, das grbit-Element der JET_INDEXCREATE2-Struktur hat JET_bitIndexTuples festgelegt, und das szKey-Element der JET_INDEXCREATE2-Struktur gibt mehr als eine Spalte an).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP und höhere Versionen von Windows. Ein Tupelindex darf kein primärer Index sein (d. r. das grbit-Element der JET_INDEXCREATE2-Struktur darf nicht sowohl JET_bitIndexPrimary als auch JET_bitIndexTuples festgelegt haben).

JET_errIndexTuplesTextColumnsOnly

Windows XP und höhere Versionen von Windows. Ein Tupelindex kann sich nur in einer Text- oder Unicode-Spalte enthalten. Ein Versuch, andere Spalten (z. B. binäre Spalten) zu indizieren, führt zu JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP und höhere Versionen von Windows. Ein Tupelindex lässt das Festlegen des cbVarSegMac-Members der JET_INDEXCREATE2-Struktur nicht zu.

JET_errInTransaction

In einer Transaktion wurde versucht, einen Index ohne Versionsinformationen zu erstellen.

JET_errInvalidgrbit

Die Indexdefinition ist ungültig, da das grbit-Element der JET_INDEXCREATE2-Struktur inkonsistente Werte enthält. Im Folgenden sind einige mögliche Gründe aufgeführt:

  • Für einen primären Index wurde ein Ignore-Bit angegeben (JET_bitIndexPrimary wurde mit einer der JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull oder JET_bitIndexIgnoreFirstNull übergeben).

  • Ein leerer Index ignoriert keine NULL-Felder (d.a. grbit-Member der JET_INDEXCREATE2-Struktur hat JET_bitIndexEmpty festgelegt, hat aber keine JET_bitIndexIgnoreAnyNull festgelegt).

  • Übergeben einer JET_CONDITIONALCOLUMN-Struktur mit einem ungültigen grbit-Element . Siehe JET_CONDITIONALCOLUMN.

Beim gleichzeitigen Erstellen mehrerer Indizes (d. a. wenn der cIndexCreate-Parameter größer als eins ist), darf keiner der Indizes eines der folgenden Bits enthalten:

  • JET_bitIndexPrimary

  • JET_bitIndexUnversioned

  • JET_bitIndexEmpty

JET_errInvalidLanguageId

Eine ungültige Gebietsschema-ID (LCID) wurde übergeben (entweder über das lcid-Element in der JET_UNICODEINDEX-Struktur , auf das das pidxunicode-Element in der JET_INDEXCREATE2-Struktur einen Zeiger enthält, oder über das lcid-Element der JET_INDEXCREATE2-Struktur ).

JET_errInvalidName

Es wurde ein ungültiger Indexname angegeben. Weitere Informationen finden Sie unter JET_INDEXCREATE2 .

JET_errInvalidParameter

Ein ungültiger Parameter wurde an die API übergeben. Im Folgenden finden Sie einige Gründe, warum dieser Fehler zurückgegeben werden kann:

JET_errUnicodeTranslationFail

Beim Normalisieren einer Unicode-Spalte ist ein Fehler aufgetreten. Dies kann dadurch verursacht werden, dass die Systemressourcen knapp werden.

JET_errSpaceHintsInvalid

Ein Element der JET-Raumhinweisstruktur war nicht richtig oder nicht umsetzbar.

Bemerkungen

Der Rückgabewert wird bei erfolgreicher Vervollständigung aller angegebenen Indizes JET_errSuccess.

JetCreateIndex3 durchläuft die in pindexcreate angegebenen Indizes und wird manchmal beim ersten Fehler abgebrochen. Alle Indizes nach dem ersten Index mit einem Fehler wurden möglicherweise nicht versucht, obwohl der fehlerr-Member der JET_INDEXCREATE2-Struktur JET_errSuccess enthält.

Anforderungen

Anforderung Wert

Client

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

Erfordert Windows Server 2008, Windows Server 2003 oder Windows 2000 Server.

Kopfzeile

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Unicode

Implementiert als JetCreateIndex3W (Unicode) und JetCreateIndex3A (ANSI).

Weitere Informationen

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE2
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JET_SPACEHINTS