JetCreateIndex2-Funktion

Gilt für: Windows | Windows Server

JetCreateIndex2-Funktion

Die JetCreateIndex2-Funktion erstellt Indizes über Daten in einer ESE-Datenbank, die verwendet werden kann, um bestimmte Daten schnell zu finden.

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

Parameter

sesid

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

tableid

Die Tabelle, auf der der Index erstellt wird.

pindexcreate

Ein Array von JET_INDEXCREATE Strukturen, die jeweils einen zu erstellenden Index definieren.

cIndexCreate

Die Anzahl der Elemente im Pindexcreate-Array .

Rückgabewert

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

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errCannotIndex

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

JET_errColumnNotFound

Es wurde versucht, eine nicht vorhandene Spalte indizieren zu können. Der Versuch, eine nicht vorhandene Spalte indizieren zu können, kann diesen Fehler auch erzeugen.

JET_errDensityInvalid

Dieser Fehler wird zurückgegeben, wenn das UlDensity-Element der JET_INDEXCREATE-Struktur auf eine Zahl festgelegt ist, die kleiner als 20 oder mehr als 100 ist.

JET_errIndexDuplicate

Ein Versuch, zwei identische Indizes zu definieren, wurde vorgenommen.

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 wird, wird das Datenbankmodul transparent erstellt.

JET_errIndexInvalidDef

Eine ungültige Indexdefinition wurde angegeben. Einige der möglichen Gründe für den Empfang dieses Fehlers sind:

  • Ein primärer Index ist bedingt (grbit member of JET_INDEXCREATE hat JET_bitIndexPrimary set, and the cConditionalColumn member of JET_INDEXCREATE is größer als null).

  • Windows Server 2003 und höher. Versuchen Sie, einen Tupleindex mit Tuplegrenzwerten zu erstellen, aber ohne Informationen im Element " ptuplelimits " in JET_INDEXCREATE zu übergeben (d. h. grbit hat JET_bitIndexTupleLimits festgelegt, aber der Ptuplelimitszeiger ist NULL).

  • Übergeben sie eine ungültige Schlüsseldefinition im szKey-Element der JET_INDEXCREATE-Struktur . Weitere Informationen zu gültigen Definitionen finden Sie unter JET_INDEXCREATE .

  • Festlegen des cbVarSegMac-Members in JET_INDEXCREATE 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 (eine, die den JET_bitIndexUnicode Bitsatz im Grbit-Element von JET_INDEXCREATE hat). Einige häufige Ursachen sind möglicherweise, dass das Feld pidxunicode der JET_INDEXCREATE-Struktur NULL ist, oder die in der Pidxunicode-Struktur angegebene LCID ist ungültig.

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

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

JET_errIndexTuplesInvalidLimits

Windows XP und höher. Eine JET_TUPLELIMITS Struktur wurde angegeben, und die Grenzwerte werden nicht unterstützt. Siehe den Abschnitt "Hinweise" der JET_TUPLELIMITS Struktur.

JET_errIndexTuplesNonUniqueOnly

Windows XP und höher. Ein Tupleindex kann nicht eindeutig sein (grbit darf nicht über JET_bitIndexTuples und JET_bitIndexUnique satz verfügen).

JET_errIndexTuplesOneColumnOnly

Windows XP und höher. Ein Tupleindex kann nur über eine einzelne Spalte (d. h. das Grbit-Element der JET_INDEXCREATE-Struktur hat JET_bitIndexTuples Festgelegt, und das szKey-Element der JET_INDEXCREATE-Struktur gibt mehrere Spalten an).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP und höher. Ein Tupleindex kann kein primärer Index sein (d. b. das Grbit-Element der JET_INDEXCREATE-Struktur darf nicht über JET_bitIndexPrimary und JET_bitIndexTuples satz verfügen).

JET_errIndexTuplesTextColumnsOnly

Windows XP und höher. Ein Tupleindex kann nur in einer Text- oder Unicode-Spalte enthalten sein. Ein Versuch, andere Spalten zu indexieren (z. B. binärspalten), führt zu JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP und höher. Ein Tupleindex erlaubt das cbVarSegMac-Element der JET_INDEXCREATE Struktur nicht festzulegen.

JET_errInTransaction

Es wurde versucht, einen Index ohne Versionsinformationen während einer Transaktion zu erstellen.

JET_errInvalidgrbit

Die Indexdefinition ist ungültig, da das Grbit-Element der JET_INDEXCREATE-Struktur inkonsistente Werte enthält. Einige mögliche Gründe sind:

  • Ein primärer Index hatte ein ignoriertes Bit angegeben (JET_bitIndexPrimary wurde mit einem JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull oder JET_bitIndexIgnoreFirstNull übergeben).

  • Ein leerer Index ignoriert keine NULL-Felder (d. a. grbit Member der JET_INDEXCREATE-Struktur hat JET_bitIndexEmpty Set, hat jedoch keine JET_bitIndexIgnoreAnyNull set).

  • Übergeben in eine JET_CONDITIONALCOLUMN Struktur mit einem ungültigen Grbit-Element . Siehe JET_CONDITIONALCOLUMN.

Wenn Sie mehrere Indizes gleichzeitig erstellen (d. h. wenn der cIndexCreate-Parameter größer als einer ist), kann keine der Indizes eine 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, an das das Pidxunicode-Element in der JET_INDEXCREATE-Struktur einen Zeiger oder über das lcid-Element der JET_INDEXCREATE-Struktur enthält).

JET_errInvalidName

Ein ungültiger Indexname wurde angegeben. Weitere Details finden Sie unter JET_INDEXCREATE .

JET_errInvalidParameter

Ein ungültiger Parameter wurde in die API übergeben. Einige der Gründe, aus denen dieser Fehler zurückgegeben werden kann, sind:

JET_errUnicodeTranslationFail

Fehler beim Versuch, eine Unicode-Spalte zu normalisieren. Dies kann durch Das Ausführen von Systemressourcen verursacht werden.

Bemerkungen

Der Rückgabewert ist JET_errSuccess bei erfolgreicher Fertigstellung aller angegebenen Indizes.

JetCreateIndex2 durch die in pindexcreate angegebenen Indizes und wird manchmal auf dem ersten Fehler abgebrochen. Alle Indizes nach dem ersten Index mit einem Fehler wurden möglicherweise nicht versucht, auch wenn das err-Element der JET_INDEXCREATE-Struktur JET_errSuccess enthält.

Requirements (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 JetCreateIndex2W (Unicode) und JetCreateIndex2A (ANSI).

Weitere Informationen

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2