Freigeben über


JetCreateIndex2-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetCreateIndex2-Funktion

Die Funktion JetCreateIndex2 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 Kontext, für den API-Aufruf zu verwendenden Datenbank Sitzung.

TableID

Die Tabelle, auf der der Index erstellt wird.

pindexcreate

Ein Array von JET_INDEXCREATE -Strukturen, von denen jedes definiert einen Index erstellt werden soll.

cIndexCreate

Die Anzahl der Elemente im Array Pindexcreate .

Return Value

Diese Funktion gibt den Datentyp JET_ERR mit einem der folgenden Rückgabecodes. Weitere Informationen zu den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine-Fehlern und Fehler behandeln von Parametern.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errCannotIndex

Es wurde versucht, über eine hinterlegten-Update oder SLV Spalte (Beachten Sie, dass SLV Spalten veraltet sind) zu indizieren.

JET_errColumnNotFound

Es wurde versucht, eine nicht vorhandene Spalte zu indizieren. Versucht, über eine nicht vorhandene Spalte bedingt index kann auch diesen Fehler erzeugen.

JET_errDensityInvalid

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

JET_errIndexDuplicate

So definieren Sie zwei identische Indizes es wurde versucht.

JET_errIndexHasPrimary

Es wurde versucht, mehr als einen einzigen Primärindex für eine Tabelle angeben. Eine Tabelle muss exakt einen primären Index verfügen. Wenn kein primärer Index angegeben wird, wird die Datenbank-Engine transparent erstellt.

JET_errIndexInvalidDef

Es wurde eine Ungültiger Indexdefinition angegeben. Mögliche Ursachen für diese Fehlermeldung sind:

  • Ein Primärindex ist bedingte (JET_errInvalidGrbit Mitglied JET_INDEXCREATE JET_bitIndexPrimary Set hat und der Member cConditionalColumnJET_INDEXCREATE größer als 0 (null) ist).

  • WindowsServer 2003 und höher. Versuch, einen Tupelindex mit Tupel Grenzwerte, jedoch ohne das Übergeben von Informationen in den Ptuplelimits Member in JET_INDEXCREATE erstellen (d. h., JET_errInvalidGrbit JET_bitIndexTupleLimits Set hat, aber der Ptuplelimits Zeiger ist NULL).

  • In der Definition einer ungültigen Schlüssel im SzKey -Member der Struktur JET_INDEXCREATE übergeben. Eine Erläuterung der gültigen Definitionen finden Sie unter JET_INDEXCREATE .

  • Festlegen des CbVarSegMac Members in JET_INDEXCREATE größer als JET_cbPrimaryKeyMost (für eine Primärindex) oder größer als JET_cbSecondaryKeyMost (für einen sekundären Index) sein.

  • Übergeben eine ungültige Kombination für einen benutzerdefinierten Unicode-Index (eine der JET_bitIndexUnicode bit ist festgelegt im JET_errInvalidGrbit -Member JET_INDEXCREATE). Einige häufige Ursachen möglicherweise, dass das Feld Pidxunicode der Struktur JET_INDEXCREATE NULL oder die LCID in der Struktur Pidxunicode angegeben ist, ist ungültig.

  • Angeben einer Spalteninhalts mit mehreren Werten für ein Primärindex.

  • Zu viele bedingte Spalten indiziert werden soll. Der cConditionalColumn Member der Struktur JET_INDEXCREATE muss nicht größer als JET_ccolKeyMost sein.

JET_errIndexTuplesInvalidLimits

Windows XP und höher. Eine Struktur JET_TUPLELIMITS angegeben wurde, und seine Grenzen werden nicht unterstützt. Finden Sie im Abschnitt "Hinweise" der Struktur JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Windows XP und höher. Ein Tupelindex kann nicht eindeutig sein (JET_errInvalidGrbit darf keine beide JET_bitIndexTuples und JET_bitIndexUnique festlegen).

JET_errIndexTuplesOneColumnOnly

Windows XP und höher. Ein Tupelindex kann nur über eine einzelne Spalte werden (d. h., der JET_errInvalidGrbit Member der Struktur JET_INDEXCREATE hat JET_bitIndexTuples Set und das SzKey Mitglied der JET_INDEXCREATE -Struktur gibt mehr als eine Spalte).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP und höher. Ein Tupelindex kann kein Primärindex sein (d. h., das JET_errInvalidGrbit Mitglied der JET_INDEXCREATE Struktur darf keine beide JET_bitIndexPrimary und JET_bitIndexTuples festlegen).

JET_errIndexTuplesTextColumnsOnly

Windows XP und höher. Ein Tupelindex kann nur für Text oder Unicode-Spalte sein. Versuch zum Indizieren von anderen Spalten (beispielsweise binäre Spalten) führt JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP und höher. Ein Tupelindex lässt keine den CbVarSegMac Member der Struktur JET_INDEXCREATE festgelegt werden soll.

JET_errInTransaction

Es wurde versucht, einen Index ohne Versionsinformationen in einer Transaktion erstellen.

JET_errInvalidgrbit

Die Indexdefinition ist ungültig, da der JET_errInvalidGrbit Member der Struktur JET_INDEXCREATE inkonsistente Werte enthält. Möglichen Ursachen sind:

  • Ein Primärindex hatte eine ignorieren Bit angegeben (JET_bitIndexPrimary mit JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull oder JET_bitIndexIgnoreFirstNull übergeben wurde).

  • Ein leerer Index NULL-Felder nicht ignoriert (d. h., JET_errInvalidGrbit , Mitglied der JET_INDEXCREATE -Struktur ist JET_bitIndexEmpty festgelegt, jedoch nicht über einen Satz JET_bitIndexIgnoreAnyNull).

  • In einer JET_CONDITIONALCOLUMN -Struktur mit einem ungültigen JET_errInvalidGrbit Member übergeben. Finden Sie unter JET_CONDITIONALCOLUMN.

Beim Erstellen mehrerer Indizes auf einmal (d. h., wenn der Parameter cIndexCreate größer als 1 ist), keine Indizes kann eine der folgenden Bits enthalten:

  • JET_bitIndexPrimary

  • JET_bitIndexUnversioned

  • JET_bitIndexEmpty

JET_errInvalidLanguageId

Eine ungültige Gebietsschema-ID (LCID) übergeben wurde (entweder über den Lcid -Member in der JET_UNICODEINDEX -Struktur, die das Pidxunicode -Element in der Struktur JET_INDEXCREATE einen Zeiger auf enthält, oder über den Lcid -Member der Struktur JET_INDEXCREATE ).

JET_errInvalidName

Es wurde ein ungültiger Indexname angegeben. Einzelheiten finden Sie unter JET_INDEXCREATE .

JET_errInvalidParameter

In der API wurde ein ungültiger Parameter übergeben. Sind einige Gründe aufgeführt, die möglicherweise dieser Fehler zurückgegeben werden:

JET_errUnicodeTranslationFail

Ein Unicode Column normalisieren ist ein Fehler aufgetreten. Dies kann durch Ausführen von Systemressourcen verursacht werden.

Anmerkungen

Der Rückgabewert ist JET_errSuccess bei erfolgreichem Abschluss aller Indizes angegeben.

JetCreateIndex2 durchlaufen und die Indizes in Pindexcreatezugewiesen und wird manchmal beim ersten Fehler abgebrochen. Nach dem ersten Index mit einem Fehler Indizes nicht haben möglicherweise versucht wurde, obwohl das err- Element der Struktur JET_INDEXCREATE JET_errSuccess enthält.

Voraussetzungen

-Client,

Erfordert Windows Vista, Windows XP oder Windows 2000 Professional.

Server

WindowsServer 2008, WindowsServer 2003 oder Windows 2000 Server benötigt.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

Erfordert "ESENT.dll".

Unicode

Implementiert als JetCreateIndex2W (Unicode) und JetCreateIndex2A (ANSI).

Siehe auch

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2