Freigeben über


JET_INDEXCREATE2-Struktur

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

Die JET_INDEXCREATE2 -Datenstruktur enthält die Informationen, die zum Erstellen eines Indexes über Daten in einer Datenbank Extensible Storage Engine (ESE) erforderlich ist. Die Struktur wird von Funktionen wie JetCreateIndex2und in Strukturen wie JET_TABLECREATE und JET_TABLECREATE2verwendet.

Die Struktur JET_INDEXCREATE2 wurde in das Betriebssystem Windows 7 eingeführt.

typedef struct tagJET_INDEXCREATE2 {
  unsigned long cbStruct;
  tchar* szIndexName;
  tchar* szKey;
  unsigned long cbKey;
  JET_GRBIT grbit;
  unsigned long ulDensity;
  union {
    unsigned long lcid;
    JET_UNICODEINDEX* pidxunicode;
  };
  union {
    unsigned long cbVarSegMac;
    JET_TUPLELIMITS* ptuplelimits;
  };
  JET_CONDITIONALCOLUMN* rgconditionalcolumn;
  unsigned long cConditionalColumn;
  JET_ERR err;
    unsigned long cbKeyMost;
  JET_SPACEHINTS* pSpacehints;
} JET_INDEXCREATE;

Mitglieder

cbStruct

Die Größe des diese Struktur in Bytes. Dieser Member auf Sizeof (JET_INDEXCREATE2) festgelegt.

szIndexName

Der Name des Index zu erstellen.

Der Name, sollten die folgenden Bedingungen erfüllen:

  • Es sollte kleiner als JET_cbNameMost, ohne den abschließenden Null sein.

  • Sie müssen die folgenden Reihe von Zeichen bestehen: 0 (null) bis 9, A bis Z, a bis z und alle anderen Zeichensetzung mit Ausnahme von "!" (Ausrufezeichen) "," (Komma), "[" (öffnende eckige Klammer) und "]" (schließende eckige Klammer) – d. h., ASCII-Zeichen 0 x 20, 0 x 22 über 0x2d, 0x2f über 0x5a, 0x5c und 0x5d bis 0x7f.

  • Es darf nicht mit einem Leerzeichen beginnen.

  • Es muss mindestens ein nicht-Leerzeichen enthalten.

szKey

Ein Zeiger auf eine Double-Wert Null endende Zeichenfolge der Token Null getrennte.

Jedes Token hat folgendes Format "< Richtung-Bezeichner >< Spaltenname >", wobei Verzeichnisangabe entweder ist "+" oder "-". Beispielsweise eine SzKey von "+ abc\0 def\0 + ghi\0" wird über die drei Spalten "Abc" (in aufsteigender Reihenfolge), indizieren "Def" (in absteigender Reihenfolge) und "Ghi" (in aufsteigender Reihenfolge). In der Programmiersprache C Zeichenfolgenliterale haben eine implizite NULL -Terminator, damit die oben aufgeführten Zeichenfolge durch einen Double-NULL-Wert wird getrennt.

Die Anzahl der Spalten in SzKey angegebenen muss JET_ccolKeyMost (eine Konstante Version abhängige) nicht überschreiten.

Mindestens eine Spalte muss in SzKeyheißen.

Veraltete Verhalten: nach der Double-Wert NULL-Terminator, es ist möglich, geben Sie eine Sprach-ID (WORD, der in MAKELCID (Langid SORT_DEFAULT) übergeben ruft) als die LCID für den Index anzugeben. Es ist nicht zulässig, eine Sprach-ID in SzKey und einer LCID in JET_UNICODEINDEX (durch Festlegen der JET_bitIndexUnicode in JET_errInvalidGrbit) angeben.

Veraltete: Nach der Sprach-ID ist es möglich, CbVarSegMac als Datentyp USHORT übergeben. Das Verhalten ist nicht definiert, wenn die USHORT beide in SzKey festgelegt ist und in der Struktur CbVarSegMac festgelegt ist.

cbKey

Die Länge des SzKey, einschließlich der zwei Abbruch NULL-Werte in Bytes.

JET_errInvalidGrbit

Eine Gruppe von Bits an, die keine oder mehrere der Werteoptionen, die in der folgenden Tabelle aufgeführten enthalten.

Wert

Bedeutung

JET_bitIndexUnique

Doppelte Einträge (Schlüssel) sind nicht zulässig. Dies wird erzwungen, wenn JetUpdate aufgerufen wird, nicht, wenn JetSetColumn aufgerufen wird.

JET_bitIndexPrimary

Der Index ist ein Primärindex (gruppierten). Jede Tabelle muss genau einen Primärindex haben. Wenn kein Primärindex explizit über die Tabelle definiert ist, wird die Datenbank-Engine eigene Primärindex erstellt.

JET_bitIndexDisallowNull

Keine der Spalten, über die der Index erstellt wird, möglicherweise einen NULL -Wert enthält.

JET_bitIndexIgnoreNull

Fügen Sie keinen Indexeintrag für eine Zeile aus, wenn alle Spalten, die indiziert NULLsind.

JET_bitIndexIgnoreAnyNull

Fügen Sie keinen Indexeintrag für eine Zeile aus, wenn eine der Spalten, die indiziert NULList.

JET_bitIndexIgnoreFirstNull

Fügen Sie keinen Indexeintrag für eine Zeile aus, wenn die erste Spalte indiziert wird NULList.

JET_bitIndexLazyFlush

Gibt an, dass die Index-Vorgänge verzögert protokolliert werden.

JET_bitIndexLazyFlush wirkt sich nicht auf die Bequemlichkeit und der Aktualisierung von Daten aus. Wenn der Indizierung Vorgang nach Beendigung des unterbrochen wird, Wiederherstellung werden in der Lage, um die Datenbank in einen konsistenten Status abzurufen, aber der Index möglicherweise nicht vorhanden.

JET_bitIndexEmpty

Versuchen Sie nicht, den Index zu erstellen, da alle Einträge zu NULLausgewertet werden würde. JET_errInvalidGrbit JET_bitIgnoreAnyNull müssen auch angeben, wenn JET_bitIndexEmpty übergeben wird. Hierbei handelt es sich um eine Leistungsverbesserung. Beispielsweise wenn eine neue Spalte zu einer Tabelle hinzugefügt wird, und klicken Sie dann ein Index, über erstellt wird hinzugefügte dies neu Spalte alle Datensätze in der Tabelle überprüft werden, obwohl sie nicht auf den Index hinzugefügt werden. Angeben von JET_bitIndexEmpty überspringt die Überprüfung der Tabelle, die möglicherweise eine lange dauern konnte.

JET_bitIndexUnversioned

JET_bitIndexUnversioned bewirkt, dass Indexerstellung für andere Transaktionen sichtbar sein soll. Normalerweise werden eine Sitzung in einer Transaktion kann kein Indexerstellungsvorgang in einer anderen Sitzung angezeigt. Dieses Kennzeichen möglicherweise hilfreich, wenn eine andere Transaktion wahrscheinlich den gleichen Index zu erstellen. Die zweite Index-create fehl einfach anstelle von potenziell zu viele unnötige Datenbankvorgänge. Die zweite Transaktion möglicherweise nicht den Index sofort verwenden können. Der Indexerstellungsvorgang hat müssen, bevor er verwendet werden kann. Die Sitzung darf nicht in einer Transaktion zum Erstellen eines Indexes ohne Versionsinformationen aktuell sein.

JET_bitIndexSortNullsHigh

Dieses Flag angegeben wird, NULL -Werte nach Daten für alle Spalten im Index sortiert werden sollen.

JET_bitIndexUnicode

Dieses Kennzeichen angeben wirkt sich auf die Interpretation der Lcid/Pidxunicde union-Felds in der Struktur. Festlegen der Bit bedeutet, die das Feld Pidxunicode tatsächlich auf eine JET_UNICODEINDEX Struktur verweist. JET_bitIndexUnicode ist nicht erforderlich, Index Unicode-Daten. Es ist nur erforderlich, um die Normalisierung von Unicode-Daten anzupassen.

JET_bitIndexTuples

Gibt an, dass der Index ein Tupelindex ist. Eine Beschreibung eines Indexes Tupel finden Sie unter JET_TUPLELIMITS .

Der Wert JET_bitIndexTuples wurde in das Betriebssystem Windows XP eingeführt.

JET_bitIndexTupleLimits

Dieses Kennzeichen angeben wirkt sich auf die Interpretation der union CbVarSegMac/Ptuplelimits -Feld in der Struktur. Durch Festlegen dieser bit bedeutet, der das Feld Ptuplelimits tatsächlich auf eine Struktur JET_TUPLELIMITS verweist auf benutzerdefinierte Tupel indexgrenzwerte zulassen (impliziert JET_bitIndexTuples).

Der Wert JET_bitIndexTupleLimits wurde in das Betriebssystem Windows Server 2003 eingeführt.

JET_bitIndexCrossProduct
0x00004000

Dieses Kennzeichen für einen Index, der mehr als eine Schlüsselspalte wurde, das eine Spalte mit mehreren Werten ist angeben führt einen Indexeintrag für jedes Ergebnis eines Produkts Cross aller Werte in diese Schlüsselspalten erstellt wird. Anderenfalls Index müssen nur einen Eintrag für jeden mehrere Werte in der wichtigsten Schlüsselspalte, die eine Spalte mit mehreren Werten ist und die Indexeinträge würde verwenden die erste mehrere Werte aus anderen wichtigen Spalten, die Spalten mit mehreren Werten sind.

Beispielsweise bei Angabe dieses Kennzeichen für einen Index über Spalte, die die Werte "Red" und "Blau" hat sowie in Spalte B mit den Werten "1" und "2", die in der folgenden Indexeinträge würde erstellt werden: "red", "1"; "red", "2"; "blue", "1"; "blue", "2". Andernfalls würde die folgenden Indexeinträge erstellt werden: "red", "1"; "blue", "1".

Der Wert JET_bitIndexCrossProduct wurde in Windows Vista eingeführt.

JET_bitIndexKeyMost
0x00008000

Dieses Kennzeichen angeben bewirkt, dass den Index, verwenden Sie die wichtigsten Maximalgröße im Feld CbKeyMost in der Struktur angegeben. Andernfalls wird der Index JET_cbKeyMost (255) als die maximale Größe für wichtige verwendet.

Der Wert JET_bitIndexKeyMost wurde in Windows Vista eingeführt.

JET_bitIndexDisallowTruncation
0x00010000

Dieses Kennzeichen angeben verursacht eine Aktualisierung der Index, die in einem abgeschnittene Schlüssel mit dem Antwortcode JET_errKeyTruncated fehlschlagen führen würde. Andernfalls werden im Hintergrund Schlüssel abgeschnitten werden. Weitere Informationen zu wichtigen Abschneiden finden Sie unter JetMakeKey.

Der Wert JET_bitIndexDisallowTruncation wurde in Windows Vista eingeführt.

ulDensity

Prozentsatz der anfänglichen B + Indexstruktur Dichte. Der eine Zahl kleiner als 100 verbraucht mehr Speicherplatz zum Erstellen des Indexes zunächst künftiges Wachstum des Indexes, wodurch vermieden interne Fragmentierung vorhanden sein können.

lcid

Den Gebietsschemabezeichner (LCID) zu verwenden, wenn die Daten normalisieren, wenn der Wert JET_bitIndexUnicode im JET_errInvalidGrbit -Parameter nicht angegeben ist. Die LCID der Normalisierung wirkt sich auf, wenn der Index über Unicode-Spalten ist.

pidxunicode

Ein Zeiger auf eine JET_UNICODEINDEX -Struktur, wenn der Wert JET_bitIndexUnicode im JET_errInvalidGrbit -Parameter angegeben ist. Dadurch wird den Benutzer zur Angabe des benutzerdefinierten Flags, die an die Funktion LCMapString während der Unicode-Normalisierung übergeben werden.

cbVarSegMac

Die maximale Länge in Bytes der einzelnen Spalten im Index zu speichern, wenn der Wert JET_bitIndexTupleLimits im JET_errInvalidGrbit -Parameter nicht angegeben ist.

Angeben der Wert 0 (null) für dieses Feld entspricht dem folgenden:

  • Angeben von JET_cbPrimaryKeyMost für ein Primärindex.

  • Angeben von JET_cbSecondaryKeyMost für einen sekundären Index.

ptuplelimits

Ein Zeiger auf eine JET_TUPLELIMITS -Struktur, wenn der Wert JET_bitIndexTupleLimits im JET_errInvalidGrbit -Parameter angegeben ist.

Ptuplelimits wurde in Windows Server 2003 eingeführt.

rgconditionalcolumn

Optionaler Parameter für ein Array von JET_CONDITIONALCOLUMN -Strukturen, die an die bedingten Spalten im Index verwendet werden.

cConditionalColumn

Die Anzahl der Strukturen im Array Rgconditionalcolumn .

err

Enthält den Rückgabecode für diesen Index zu erstellen.

cbKeyMost

Gibt die maximale zulässige Größe in Bytes für die Schlüssel im Index. Dieser Parameter wird ignoriert, wenn JET_bitIndexKeyMost im JET_errInvalidGrbit -Parameter nicht angegeben ist. Wenn dieser Parameter auf NULL festgelegt ist, und JET_bitIndexKeyMost im JET_errInvalidGrbit -Member angegeben ist, wird die aufrufende Funktion mit JET_err_InvalidDef fehl.

Die minimale unterstützte wichtige Maximalgröße ist JET_cbKeyMostMin (255), die legacy maximale Größe des Schlüssels.

Die maximale Größe des Schlüssels ist abhängig von der Seitengröße der Datenbank (JET_paramDatabasePageSize) wie folgt:

  • Wenn JET_paramDatabasePageSize = 2048 dann JET_cbKeyMostMin (255) < = CbKeyMost < = JET_cbKeyMost2KBytePage (500)

  • Wenn JET_paramDatabasePageSize = 4096 dann JET_cbKeyMostMin (255) < = CbKeyMost < = JET_cbKeyMost4KBytePage (1000)

  • Wenn JET_paramDatabasePageSize = 8192 dann JET_cbKeyMostMin (255) < = CbKeyMost < = JET_cbKeyMost8KBytePage (2000)

Die maximale unterstützte maximale wichtige Größe für die Instanz kann auch aus dem System-Parameter JET_paramKeyMost gelesen werden.

CbKeyMost wurde in Windows Vista eingeführt.

pSpacehints

Ein Zeiger auf eine JET_SPACEHINTS -Struktur.

pSpacehints wurde in Windows 7 eingeführt.

Anmerkungen

ESE unterstützt Indizierung über wichtige Spalten, die mehrere Werte enthalten. Um dieses Feature verwenden können, muss die Spalte eine bereichsspezifische Spaltentyp (JET_bitColumnTagged), und es muss gekennzeichnet werden, um dessen Index mit JET_bitColumnMultiValued mehrere Werte aufweisen. In früheren Versionen von Windows als Windows Vista wird nur die erste mehrwertige Schlüsselspalte im Index die Werte im Index erweitert haben. Alle anderen mehrwertigen und markierten Spalten haben nur die ersten Werte im Index erweitert.

Sie nehmen an die folgenden Zeilen in einer Tabelle vorhanden sein (Spalte Alpha ist nicht mehrwertig, während die Spalten Betaphase Gamma, und Delta mehrwertige sind), und ein Index erstellt wird, als "+ Alpha\0 + Beta\0 + Gamma\0 + Delta\0\0":

ALPHA

Beta

Gamma

Delta

1

ABC
GHI
JKL

MNO
PQR
STU

VWX
YZ

2

Dieser Parameter

RAIN
Spanien

IN
fällt

Die folgenden Index-Tupel gespeichert werden:

{1, ABC MNO, VWX}
{1, GHI, MNO, VWX}
{1, JKL, MNO, VWX}
{2, die, RAIN, IN}

Beachten Sie, dass {2, die, Spanien, IN} nicht gespeichert werden, obwohl die Alpha-Spalte in der zweiten Zeile mit eine einzelne mehrwertigen haben geschieht.

In Versionen von Windows, beginnend mit Windows Vista können alle mehrwertige Spalten im Index durch Angeben von JET_bitIndexCrossProduct erweitert werden.

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.

Unicode

Implementiert als JET_ INDEXCREATE2_W (Unicode) und JET_ INDEXCREATE2_A (ANSI).

Siehe auch

JET_COLTYP
JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_TABLECREATE
JET_TABLECREATE2
JET_TUPLELIMITS
JET_UNICODEINDEX
JetCreateIndex2
JetSetColumn
JetUpdate