JetCreateTableColumnIndex4W-Funktion

Gilt für: Windows | Windows Server

Die JetCreateTableColumnIndex4W-Funktion erstellt eine Tabelle in einer Extensible Storage Engine (ESE(-Datenbank) mit einem anfänglichen Satz von Indizes und einem anfänglichen Satz von Spalten aus einem Array von JET_TABLECREATE3 Strukturen. Mit der JET_TABLECREATE3-Struktur kann eine Rückruffunktion angegeben werden.

Die JetCreateTableColumnIndex4W-Funktion wurde im Windows 8 Betriebssystem eingeführt.

JET_ERR JET_API JetCreateTableColumnIndex4W(
  __in          JET_SESID sesid,
  __in          JET_DBID dbid,
  __in_out      JET_TABLECREATE3* ptablecreate
);

Parameter

sesid

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

dbid

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

ptablecreate

Ein Zeiger auf eine JET_TABLECREATE3 Struktur, die die zu erstellende Tabelle definiert. Weitere Informationen finden Sie unter JET_TABLECREATE3 .

Rückgabewert

Diese Funktion gibt den JET_ERR-Datentyp mit einem der Rückgabecodes zurück, die in der folgenden Tabelle aufgeführt sind. Weitere Informationen zu den möglichen Ese-Fehlern (Extensible Storage Enginge) finden Sie unter Erweiterbare Speichermodulfehler und Fehlerbehandlungsparameter.

Rückgabecode

Beschreibung

JET_errSuccess

Der Vorgang wurde erfolgreich abgeschlossen.

JET_errCallbackNotResolved

Die Rückruffunktion konnte nicht aufgelöst werden. Die DLL wurde möglicherweise nicht gefunden, oder die Funktion in der DLL wurde nicht gefunden. Wenn genügend Protokollierung aktiviert ist, enthält das Ereignisprotokoll weitere Details.

JET_errCannotIndex

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

JET_errCannotNestDDL

Wird zurückgegeben, wenn der ptablecreate-grbit-Parameter> den JET_bitTableCreateTemplateTable Wert angibt, der Parameter ptablecreate-szTemplateTableName> jedoch auf NULL festgelegt ist.

JET_errColumnDuplicate

Eine Spalte ist bereits vorhanden.

JET_errColumnNotFound

Es wurde versucht, eine nicht vorhandene Spalte zu indizieren. Ein Versuch, eine nicht vorhandene Spalte bedingt indizieren zu lassen, kann auch diesen Fehler verursachen.

JET_errColumnRedundant

Es wurde versucht, eine redundante Spalte hinzuzufügen. Es sollte nicht mehr als eine Autoinkrementspalte vorhanden sein, und pro Tabelle sollte nicht mehr als eine Versionsspalte vorhanden sein.

JET_errDensityInvalid

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

JET_errDDLNotInheritable

Bedeutet, dass die Tabelle mit dem Namen im element szTemplateTableName der JET_TABLECREATE3-Struktur nicht als Vorlagentabelle markiert wurde (d.a. diese Tabelle hatte nicht den JET_bitTableCreateTemplateTable-Parameterwert festgelegt).

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 der möglichen Gründe für diesen Fehler aufgeführt:

  • Ein primärer Index ist bedingt (das grbit-Element der JET_INDEXCREATE2-Struktur hat den JET_bitIndexPrimary-Wert festgelegt, und das cConditionalColumn-Element der JET_INDEXCREATE2-Struktur ist größer als 0).

  • Gilt für Versionen des Windows Server-Betriebssystems ab Windows Server 2003. Ein Versuch, einen Tupelindex mit Tupelgrenzwerten zu erstellen, jedoch ohne das element ptuplelimits in der JET_INDEXCREATE2-Struktur zu übergeben (d. h., das grbit-Element der JET_INDEXCREATE2-Struktur hat JET_bitIndexTupleLimits Wert festgelegt, aber der ptuplelimits-Zeiger ist NULL).

  • Übergeben einer ungültigen Schlüsseldefinition im szKey-Member der JET_INDEXCREATE2-Struktur . Informationen zu gültigen Definitionen finden Sie unter JET_INDEXCREATE2.

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

  • Übergeben einer ungültigen Kombination für einen benutzerdefinierten Unicode-Index (einer, bei dem das JET_bitIndexUnicode-Wertbitbit im grbit-Element der JET_INDEXCREATE2-Struktur festgelegt ist). Einige häufige Ursachen sind das pidxunicode-Element der JET_INDEXCREATE2-Struktur NULL ist, oder die in der pidxunicode-Struktur angegebene LCID ist ungültig.

  • 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

Gilt für Versionen von Windows ab Windows XP. 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

Gilt für Versionen von Windows ab Windows XP. Ein Tupelindex kann nicht eindeutig sein (das heißt, das grbit-Element der JET_INDEXCREATE2-Struktur darf nicht über JET_bitIndexPrimary- und JET_bitIndexUnique-Werte festgelegt sein).

JET_errIndexTuplesOneColumnOnly

Gilt für Versionen von Windows ab Windows XP. Ein Tupelindex kann sich nur über einer einzelnen Spalte befinden (das heißt, wenn für das grbit-Element der JET_INDEXCREATE2-Struktur JET_bitIndexTuples Wert festgelegt ist und das szKey-Element der JET_INDEXCREATE2-Struktur mehr als eine Spalte angibt).

JET_errIndexTuplesSecondaryIndexOnly

Gilt für Versionen von Windows ab Windows XP. 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

Gilt für Versionen von Windows ab Windows XP. 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 einem JET_errIndexTuplesTextColumnsOnly Antwortcode.

JET_errIndexTuplesVarSegMacNotAllowed

Gilt für Versionen von Windows ab Windows XP. 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_errInvalidCodePage

Das cp-Element der JET_COLUMNCREATE-Struktur wurde nicht auf eine gültige Codepage festgelegt. Die einzigen gültigen Werte für Textspalten sind Englisch (1252) und Unicode (1200). Der Wert 0 bedeutet, dass der Standardwert verwendet wird (Englisch, 1252).

JET_errInvalidColumnType

Das Coltypelement der JET_COLUMNCREATE-Struktur wurde nicht auf einen gültigen Spaltentyp festgelegt.

JET_errInvalidCreateIndex

Im Folgenden finden Sie einige Gründe, warum dieser Fehler auftreten kann:

JET_errInvalidgrbit

Eine ungültige Kombination von grbit-Elementen wurde in der JET_TABLECREATE3-Struktur angegeben.

Die Indexdefinition ist ungültig, da das grbit-Element 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 (d. JET_bitIndexPrimary Wert wurde mit den werten JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull oder JET_bitIndexIgnoreFirstNull übergeben).

  • Ein leerer Index ignoriert keine NULL-Elemente (d. a. das grbit-Element der JET_INDEXCREATE2-Struktur hat den JET_bitIndexEmpty-Wert festgelegt, aber nicht JET_bitIndexIgnoreAnyNull Wert festgelegt).

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

JET_errInvalidLanguageId

Eine ungültige Gebietsschema-ID (LCID) wurde übergeben (entweder über den lcid-Member der JET_UNICODEINDEX-Struktur , auf die der pidxunicode-Member in der JET_INDEXCREATE2-Struktur verweist, oder über das Lcid-Feld der JET_INDEXCREATE2-Struktur ).

JET_errInvalidParameter

Ein ungültiger Parameter wurde angegeben. Im Folgenden sind einige mögliche Gründe aufgeführt:

JET_errRecordTooBig

Der Datensatz ist zu groß. Die Summe des cbMax-Elements der JET_COLUMNCREATE-Struktur für alle festen Spalten darf einen bestimmten Wert nicht überschreiten.

JET_errTableDuplicate

Die Tabelle ist bereits vorhanden.

JET_errTooManyColumns

Es wurde versucht, der Tabelle zu viele Spalten hinzuzufügen. Eine Tabelle darf nicht mehr als JET_ccolFixedMost festen Spalten, nicht mehr als JET_ccolVarMost Spalten mit variabler Länge und nicht mehr als JET_ccolTaggedMost markierten Spalten enthalten.

JET_errUnicodeTranslationFail

Fehler beim Versuch, eine Unicode-Spalte zu normalisieren. Dies kann dadurch verursacht werden, dass die Systemressourcen nicht mehr vorhanden sind.

JET_errSpaceHintsInvalid

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

Bemerkungen

Die JetCreateTableColumnIndex4W-Funktion erstellt eine Tabelle mit einem anfänglichen Satz von Spalten und Indizes. Zusätzliche Spalten und Indizes können mithilfe der Funktionen JetAddColumn, JetDeleteColumn, JetDeleteColumn2, JetCreateIndex, JetCreateIndex2, JetCreateIndex2, JetCreateIndex3, JetCreateIndex3, JetCreateIndex4W und JetDeleteIndex dynamisch hinzugefügt und entfernt werden.

Wie bei der JetOpenTable-Funktion sollte die JetCloseTable-Funktion die Anwendung schließen, wenn die Anwendung mit der zurückgegebenen Tableid verwendet wird.

Anforderungen

Anforderung Wert

Client

Erfordert Windows 8.

Server

Erfordert Windows Server 2012.

Kopfzeile

Deklariert in Esent.h.

Bibliothek

Verwenden Sie ESENT.lib.

DLL

Erfordert ESENT.dll.

Siehe auch

JET_CBTYP
JET_DBID
JET_ERR
JET_GRBIT
JET_INDEXCREATE
JET_INDEXCREATE2
JET_SESID
JET_TABLEID
JET_TABLECREATE2
JET_TABLECREATE3
JET_TUPLELIMITS
JetAddColumn
JetCreateIndex
JetCreateIndex2
JetCreateIndex3
JetCreateTable
JetCreateTableColumnIndex
JetDeleteColumn
JetDeleteColumn2