JetCreateTable-Funktion

Gilt für: Windows | Windows Server

JetCreateTable-Funktion

Die JetCreateTable-Funktion erstellt eine leere Tabelle in einer ESE-Datenbank.

    JET_ERR JET_API JetCreateTable(
      __in          JET_SESID sesid,
      __in          JET_DBID dbid,
      __in          const tchar* szTableName,
      __in          unsigned long lPages,
      __in          unsigned long lDensity,
      __out         JET_TABLEID* ptableid
    );

Parameter

sesid

Der zu verwendende Datenbanksitzungskontext.

dbid

Der zu verwendende Datenbankbezeichner.

szTableName

Der Name des zu erstellenden Indexes.

Der Name muss gemäß den folgenden Regeln formatiert werden:

  • Kleiner als JET_cbNameMost sein, ohne den beendenden NULL-Wert einzuzählen.

  • Aus den folgenden Zeichen bestehen: 0 bis 9, A bis Z, a bis z und alle anderen Interpunktionszeichen mit Ausnahme von "!" (Ausrufezeichen), "," (Komma), "[" (öffnende Klammer) und "]" (schließende Klammer) – also ASCII-Zeichen 0x20, 0x22 bis 0x2d, 0x2f bis 0x5a, 0x5c, 0x5d bis 0x7f.

  • Beginnen Sie nicht mit einem Leerzeichen.

  • Aus mindestens einem Zeichen ohne Leerzeichen bestehen.

lPages

Die anfängliche Anzahl von Datenbankseiten, die der Tabelle zugeordnet werden sollen. Die Angabe einer Zahl, die größer als eins ist, kann die Fragmentierung verringern, wenn viele Zeilen in diese Tabelle eingefügt werden.

lDensity

Die Tabellendichte in Prozentpunkten. Die Zahl muss entweder 0 oder im Bereich von 20 bis 100 sein. Das Übergeben von 0 bedeutet, dass der Standardwert verwendet werden sollte. Der Standardwert beträgt 80.

Ptableid

Bei Erfolg wird der Tabellenbezeichner in diesem Feld zurückgegeben. Der Wert ist nicht definiert, wenn die API keine JET_errSuccess zurückgibt.

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_errCallbackNotResolved

Die Rückruffunktion konnte nicht aufgelöst werden. Die DLL wurde möglicherweise nicht gefunden, oder die Funktion in der DLL wurde möglicherweise nicht gefunden. Wenn genügend Protokollierung aktiviert ist, liefert 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

Wenn ptablecreate-grbit> JET_bitTableCreateTemplateTable angibt, aber ptablecreate-szTemplateTableName> auf NULL festgelegt ist.

JET_errColumnDuplicate

Eine Spalte ist bereits vorhanden.

JET_errColumnNotFound

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

JET_errColumnRedundant

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

JET_errDensityInvalid

Eine ungültige Dichte wurde im ulDensity-Member in der JET_TABLECREATE- oder JET_TABLECREATE2-Struktur übergeben.

JET_errDDLNotInheritable

Gibt an, dass die Tabelle, die im szTemplateTableName-Element der JET_TABLECREATE-Struktur benannt ist, nicht als Vorlagentabelle markiert war (d. a. für diese Tabelle wurde keine JET_bitTableCreateTemplateTable 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 transparent einen Index.

JET_errIndexInvalidDef

Es wurde eine ungültige Indexdefinition angegeben. Mögliche Gründe für den Empfang dieses Fehlers sind:

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

  • Windows Server 2003 und höher. Der Versuch, einen Tupelindex mit Tupelgrenzwerten zu erstellen, ohne jedoch den ptuplelimits-Member in der JET_INDEXCREATE-Struktur zu übergeben (d. h., das grbit-Element der JET_INDEXCREATE-Struktur hat JET_bitIndexTupleLimits festgelegt, aber der ptuplelimits-Zeiger ist NULL).

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

  • Festlegen des cbVarSegMac-Elements in JET_INDEXCREATE auf 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_INDEXCREATE festgelegt ist). Einige häufige Ursachen sind das pidxunicode-Element 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.

  • Versuch, zu viele bedingte Spalten zu indizieren. Der cConditionalColumn-Member der JET_INDEXCREATE-Struktur darf nicht größer als JET_ccolKeyMost sein.

JET_errIndexTuplesInvalidLimits

Windows XP und höher. 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öher. Ein Tupelindex kann nicht eindeutig sein (das heißt, der Grbit-Member der JET_INDEXCREATE-Struktur darf nicht sowohl JET_bitIndexPrimary als auch JET_bitIndexUnique festgelegt haben).

JET_errIndexTuplesOneColumnOnly

Windows XP und höher. Ein Tupelindex kann sich nur über einer einzelnen Spalte befinden (d. a. wenn für das grbit-Element der JET_INDEXCREATE-Struktur JET_bitIndexTuples festgelegt ist und der szKey-Member der JET_INDEXCREATE-Struktur mehr als eine Spalte angibt).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP und höher. Ein Tupelindex kann kein primärer Index sein (das heißt, der Grbit-Member der JET_INDEXCREATE-Struktur darf nicht sowohl JET_bitIndexPrimary als auch JET_bitIndexTuples festgelegt haben).

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP und höher. Ein Tupelindex lässt das Festlegen des cbVarSegMac-Elements der JET_INDEXCREATE-Struktur nicht zu.

JET_errIndexTuplesTextColumnsOnly

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

JET_errInTransaction

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

JET_errInvalidCodePage

Der cp-Member 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

Der coltyp-Member der JET_COLUMNCREATE-Struktur wurde nicht auf einen gültigen Spaltentyp festgelegt.

JET_errInvalidCreateIndex

Einige der Gründe, warum dieser Fehler auftreten kann:

JET_errInvalidgrbit

In JET_TABLECREATE oder JET_TABLECREATE2 wurde eine ungültige Kombination von Grbit-Elementen angegeben.

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

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

  • Ein leerer Index ignoriert keine NULL-Member (das heißt, der grbit-Member der JET_INDEXCREATE-Struktur hat JET_bitIndexEmpty festgelegt, hat jedoch keine JET_bitIndexIgnoreAnyNull 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 den der pidxunicode-Member in der JET_INDEXCREATE-Struktur verweist, oder über das Lcid-Feld der JET_INDEXCREATE-Struktur ).

JET_errInvalidParameter

Ein ungültiger Parameter wurde angegeben. Einige mögliche Gründe sind:

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 Normalisieren einer Unicode-Spalte. Dies kann dadurch verursacht werden, dass die Systemressourcen nicht mehr vorhanden sind.

Bemerkungen

JetCreateTable erstellt eine Tabelle, die keine Spalten enthält. Informationen zum Hinzufügen von Spalten finden Sie unter JetAddColumn.

Intern ruft JetCreateTableJetCreateTableColumnIndex2 auf und füllt eine JET_TABLECREATE2-Struktur mit:

  • JET_TABLECREATE2.cbStruct = sizeof( JET_TABLECREATE2 )

  • JET_TABLECREATE2.szTableName = szTableName

  • JET_TABLECREATE2.ulPages = lPage

  • JET_TABLECREATE2.ulDensity = lDensity

  • JET_TABLECREATE2.tableid = JET_tableidNil

Alle anderen Felder der internen JET_TABLECREATE2-Struktur sind auf Null oder NULL festgelegt. Bei der Ausgabe wird ptableid auf JET_TABLECREATE2.tableid festgelegt.

Weitere Informationen finden Sie unter JetCreateTableColumnIndex2 .

Wenn die Anwendung das zurückgegebene tableid-Element aus der JET_TABLECREATE2-Struktur verwendet, sollte sie wie JetOpenTable in der Regel mit JetCloseTable geschlossen werden.

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 JetCreateTableW (Unicode) und JetCreateTableA (ANSI).

Weitere Informationen

JET_DBID
JET_ERR
JET_GRBIT
JET_TABLEID
JET_TABLECREATE2
JetAddColumn
JetCreateTableColumnIndex
JetCreateTableColumnIndex2