JetOpenTempTable3-Funktion

Gilt für: Windows | Windows Server

JetOpenTempTable3-Funktion

Die JetOpenTempTable3-Funktion erstellt eine temporäre Tabelle mit einem einzelnen Index, der zum Speichern und Abrufen von Datensätzen verwendet werden kann, genau wie eine gewöhnliche Tabelle, die mit JetCreateTableColumnIndex erstellt wurde. Temporäre Tabellen sind jedoch aufgrund ihrer flüchtigen Natur viel schneller als gewöhnliche Tabellen. Sie können auch verwendet werden, um doppeltes Entfernen von Datensatzsätzen sehr schnell zu sortieren und durchzuführen, wenn auf rein sequenzielle Weise darauf zugegriffen wird.

    JET_ERR JET_API JetOpenTempTable3(
      __in          JET_SESID sesid,
      __in          const JET_COLUMNDEF* prgcolumndef,
      __in          unsigned long ccolumn,
      __in_opt      JET_UNICODEINDEX* pidxunicode,
      __in          JET_GRBIT grbit,
      __out         JET_TABLEID* ptableid,
      __out         JET_COLUMNID* prgcolumnid
    );

Parameter

sesid

Die Sitzung, die für diesen Aufruf verwendet werden soll.

prgcolumndef

Gibt die Spaltendefinitionen der Spalten an, die in der temporären Tabelle erstellt werden sollen.

Es bestehen wichtige Einschränkungen für die Spaltendefinitionsoptionen, die mit einer temporären Tabelle verwendet werden können. Weitere Informationen finden Sie im Abschnitt Hinweise.

Zusätzlich zu den üblichen Spaltendefinitionsoptionen können auch null oder mehr der folgenden Optionen angegeben werden, die nur im Kontext einer temporären Tabelle relevant sind.

Wert

Bedeutung

JET_bitColumnTTDescending

Diese Option gibt an, dass die Sortierreihenfolge der Schlüsselspalte für die temporäre Tabelle absteigend und nicht aufsteigend sein sollte. Wenn diese Option ohne JET_bitColumnTTKey angegeben wird, wird diese Option ignoriert.

JET_bitColumnTTKey

Diese Option gibt an, dass die Spalte eine Schlüsselspalte für die temporäre Tabelle ist.

Die Reihenfolge der Spaltendefinitionen mit dieser Option, die im Eingabearray angegeben ist, bestimmt die Rangfolge jeder Schlüsselspalte für die temporäre Tabelle. Die erste Spaltendefinition im Array mit dieser Option ist die bedeutendste Schlüsselspalte usw. Wenn mehr Schlüsselspalten angefordert werden, als von der Datenbank-Engine unterstützt werden können, wird diese Option für die nicht unterstützten Schlüsselspalten ignoriert.

ccolumn

Siehe prgcolumndef.

pidxunicode

Die Gebietsschema-ID und die Normalisierungsflags, die zum Vergleichen aller Unicode-Schlüsselspaltendaten in der temporären Tabelle verwendet werden.

Wenn dieser Parameter nicht vorhanden ist, wird die Standard-LCID verwendet, um alle Unicode-Schlüsselspalten in der temporären Tabelle zu vergleichen. Die Standard-LCID ist das us-englische Gebietsschema.

Wenn dieser Parameter nicht vorhanden ist, werden die Standardnormalisierungsflags verwendet, um alle Unicode-Schlüsselspaltendaten in der temporären Tabelle zu vergleichen. Die Standardnormalisierungsflags sind: NORM_IGNORECASE, NORM_IGNOREKANATYPE und NORM_IGNOREWIDTH.

grbit

Eine Gruppe von Bits, die die Optionen enthalten, die für diesen Aufruf verwendet werden sollen, einschließlich 0 oder mehr der folgenden Optionen.

Wert

Bedeutung

JET_bitTTErrorOnDuplicateInsertion

Diese Option fordert an, dass jeder Versuch, einen Datensatz mit demselben Indexschlüssel wie ein zuvor eingefügter Datensatz einzufügen, sofort mit JET_errKeyDuplicate fehlschlägt. Wenn diese Option nicht angefordert wird, wird möglicherweise sofort ein Duplikat erkannt und schlägt fehl oder wird später automatisch entfernt, je nachdem, welche Strategie die Datenbank-Engine für die Implementierung der temporären Tabelle basierend auf der angeforderten Funktionalität gewählt hat.

Wenn diese Funktionalität nicht erforderlich ist, ist es am besten, sie nicht anzufordern. Wenn diese Funktionalität nicht angefordert wird, kann der Manager für temporäre Tabellen möglicherweise eine Strategie für die Verwaltung der temporären Tabelle auswählen, die zu einer verbesserten Leistung führt.

JET_bitTTForceMaterialization

Diese Option zwingt den temporären Tabellenmanager, jeden Versuch aufzugeben, eine clevere Strategie für die Verwaltung der temporären Tabelle zu wählen, die zu einer verbesserten Leistung führt.

JET_bitTTForwardOnly

Diese Option fordert an, dass die temporäre Tabelle nur erstellt wird, wenn der temporäre Tabellen-Manager die für Zwischenabfrageergebnisse optimierte Implementierung verwenden kann. Wenn ein Merkmal der temporären Tabelle die Verwendung dieser Optimierung verhindern würde, schlägt der Vorgang mit JET_errCannotMaterializeForwardOnlySort fehl.

Eine Nebenwirkung dieser Option besteht darin, dass die temporäre Tabelle Datensätze mit doppelten Indexschlüsseln enthält. Weitere Informationen finden Sie unter JET_bitTTUnique.

Diese Option ist nur unter Windows Server 2003 und höheren Versionen verfügbar.

JET_bitTTIndexed

Diese Option fordert an, dass die temporäre Tabelle flexibel genug ist, um die Verwendung von JetSeek zum Suchen von Datensätzen nach Indexschlüsseln zu ermöglichen.

Wenn diese Funktionalität nicht erforderlich ist, ist es am besten, sie nicht anzufordern. Wenn diese Funktionalität nicht angefordert wird, kann der Manager für temporäre Tabellen möglicherweise eine Strategie für die Verwaltung der temporären Tabelle auswählen, die zu einer verbesserten Leistung führt.

JET_bitTTUnique

Mit dieser Option wird angefordert, dass Datensätze mit doppelten Indexschlüsseln aus dem endgültigen Datensatzsatz in der temporären Tabelle entfernt werden.

Vor Windows Server 2003 ging die Datenbank-Engine immer davon aus, dass diese Option wirksam ist, da alle gruppierten Indizes ebenfalls ein Primärschlüssel und somit eindeutig sein müssen. Ab Windows Server 2003 ist es jetzt möglich, eine temporäre Tabelle zu erstellen, die KEINE Duplikate entfernt, wenn auch die Option JET_bitTTForwardOnly angegeben ist.

Es ist nicht möglich zu wissen, welches Duplikat gewinnt und welche Duplikate im Allgemeinen verworfen werden. Wenn jedoch die Option JET_bitTTErrorOnDuplicateInsertion angefordert wird, gewinnt immer der erste Datensatz mit einem bestimmten Indexschlüssel, der in die temporäre Tabelle eingefügt werden soll.

JET_bitTTUpdatable

Mit dieser Option wird angefordert, dass die temporäre Tabelle flexibel genug ist, damit datensätze, die zuvor eingefügt wurden, nachträglich geändert werden können. Wenn diese Funktionalität nicht erforderlich ist, ist es am besten, sie nicht anzufordern.

Wenn diese Funktionalität nicht angefordert wird, kann der Manager für temporäre Tabellen möglicherweise eine Strategie für die Verwaltung der temporären Tabelle auswählen, die zu einer verbesserten Leistung führt.

JET_bitTTScrollable

Diese Option fordert an, dass die temporäre Tabelle flexibel genug ist, damit Datensätze mit JetMove in beliebiger Reihenfolge und Richtung gescannt werden können.

Wenn diese Funktionalität nicht erforderlich ist, ist es am besten, sie nicht anzufordern. Wenn diese Funktionalität nicht angefordert wird, kann der Manager für temporäre Tabellen möglicherweise eine Strategie für die Verwaltung der temporären Tabelle auswählen, die zu einer verbesserten Leistung führt.

JET_bitTTSortNullsHigh

Diese Option fordert an, dass NULL-Schlüsselspaltenwerte näher am Ende des Indexes sortiert werden, als Werte für Schlüsselspalten, die nicht NULL sind.

JET_bitTTIntrinsicLVsOnly

Fordert an, nur systeminterne long-Werte zuzulassen.

Windows 7: JET_bitTTIntrinsicLVsOnly wird in Windows 7 eingeführt.

Ptableid

Der Ausgabepuffer, der den neuen Cursor empfängt, der für die neu erstellte temporäre Tabelle geöffnet wird.

prgcolumnid

Der Ausgabepuffer, der das Array der Spalten-IDs empfängt, die während der Erstellung der temporären Tabelle generiert wurden.

Die Spalten-IDs in diesem Array entsprechen genau dem Eingabearray von Spaltendefinitionen. Daher muss die Größe dieses Puffers der Größe des Eingabearrays entsprechen.

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_errCannotMaterializeForwardOnlySort

JetOpenTempTable3 ist fehlgeschlagen, weil JET_bitTTForwardOnly angegeben wurde und die angegebene temporäre Tabelle nicht mithilfe der Vorwärtsoptimierung erstellt werden konnte. Dieser Fehler wird nur von Windows Server 2003 und höheren Versionen zurückgegeben.

JET_errClientRequestToStopJetService

Es ist nicht möglich, den Vorgang abzuschließen, da alle Aktivitäten auf der instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs von JetStopService beendet wurden.

JET_errIndexInvalidDef

Der Index konnte nicht erstellt werden, da eine ungültige Indexdefinition angegeben wurde. JetOpenTempTable3 gibt diesen Fehler in folgenden Fällen zurück:

  • Das Gebietsschema "Sprachneutral" wird angegeben.

  • Es wird ein ungültiger Satz von Normalisierungsflags angegeben.

Dieser Fehler wird nur von Windows 2000 zurückgegeben.

JET_errInstanceUnavailable

Es ist nicht möglich, den Vorgang abzuschließen, da für die instance, die der Sitzung zugeordnet ist, ein schwerwiegender Fehler aufgetreten ist, der erfordert, dass der Zugriff auf alle Daten widerrufen wird, um die Integrität dieser Daten zu schützen. Dieser Fehler wird nur von Windows XP und späteren Versionen zurückgegeben.

JET_errInvalidCodePage

Der cp-Member der JET_COLUMNDEF-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_COLUMNDEF-Struktur wurde nicht auf einen gültigen Spaltentyp festgelegt.

JET_errInvalidLanguageId

Der Index konnte nicht erstellt werden, weil versucht wurde, eine ungültige Gebietsschema-ID zu verwenden. Die Gebietsschema-ID ist möglicherweise vollständig ungültig, oder das zugeordnete Sprachpaket ist möglicherweise nicht installiert.

JET_errInvalidLCMapStringFlags

Der Index konnte nicht erstellt werden, weil versucht wurde, einen ungültigen Satz von Normalisierungsflags zu verwenden. Dieser Fehler wird nur von Windows XP und späteren Versionen zurückgegeben. Unter Windows 2000 führen ungültige Normalisierungsflags stattdessen zu JET_errIndexInvalidDef.

JET_errInvalidSesid

Das Sitzungshandle ist ungültig oder bezieht sich auf eine geschlossene Sitzung. Dieser Fehler wird nicht unter allen Umständen zurückgegeben. Handles werden nur auf der Grundlage des bestmöglichen Aufwands überprüft.

JET_errNotInitialized

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance noch nicht initialisiert wurde.

JET_errOutOfCursors

Der Vorgang ist fehlgeschlagen, da die Engine die ressourcen nicht zuordnen kann, die zum Öffnen eines neuen Cursors erforderlich sind. Cursorressourcen werden mithilfe von JetSetSystemParameter mit JET_paramMaxCursors konfiguriert.

JET_errOutOfMemory

Der Vorgang ist fehlgeschlagen, weil nicht genügend Arbeitsspeicher zugeordnet werden konnte, um ihn abzuschließen.

JetOpenTempTable3 kann JET_errOutOfMemory zurückgeben, wenn der Adressraum des Hostprozesses zu fragmentiert wird. Der temporäre Tabellen-Manager ordnet immer einen Adressraum von 1 MB für jede temporäre Tabelle zu, die erstellt wird, unabhängig von der Menge der zu speichernden Daten.

JET_errRestoreInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da ein Wiederherstellungsvorgang für die instance ausgeführt wird, die der Sitzung zugeordnet ist.

JET_errSessionSharingViolation

Dieselbe Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden.

Dieser Fehler wird nur von Windows XP und späteren Versionen zurückgegeben.

JET_errTermInProgress

Es ist nicht möglich, den Vorgang abzuschließen, da die der Sitzung zugeordnete instance heruntergefahren wird.

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_errTooManyOpenIndexes

Der Vorgang ist fehlgeschlagen, da die Engine die Ressourcen nicht zuordnen kann, die zum Zwischenspeichern der Indizes der Tabelle erforderlich sind. Die Anzahl der Indizes, deren Schema zwischengespeichert werden kann, wird mithilfe von JetSetSystemParameter mit JET_paramMaxOpenTables konfiguriert.

JET_errTooManyOpenTables

Der Vorgang ist fehlgeschlagen, da die Engine die Ressourcen nicht zuordnen kann, die zum Zwischenspeichern des Schemas der Tabelle erforderlich sind. Die Anzahl der Tabellen, deren Schema zwischengespeichert werden kann, wird mithilfe von JetSetSystemParameter mit JET_paramMaxOpenTables konfiguriert.

JET_errTooManySorts

Der Vorgang ist fehlgeschlagen, weil die Engine die zum Erstellen einer temporären Tabelle erforderlichen Ressourcen nicht zuordnen kann. Temporäre Tabellenressourcen werden mithilfe von JetSetSystemParameter mit JET_paramMaxTemporaryTables konfiguriert.

Bei Erfolg wird ein Cursor zurückgegeben, der für die neu erstellte temporäre Tabelle geöffnet wurde. Der Status der temporären Datenbank wird so vorbereitet, dass die neue temporäre Tabelle enthalten ist. Der Status aller gewöhnlichen Datenbanken, die von der Datenbank-Engine verwendet werden, bleibt unverändert.

Bei einem Fehler wird die temporäre Tabelle nicht erstellt, und ein Cursor wird nicht zurückgegeben. Der Status der temporären Datenbank kann geändert werden. Der Status aller gewöhnlichen Datenbanken, die von der Datenbank-Engine verwendet werden, bleibt unverändert.

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.

Weitere Informationen

Fehler der erweiterbaren Speicher-Engine
Fehlerbehandlungsparameter
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetOpenTempTable
JetRollback
JetSeek
JetSetSystemParameter
Systemparameter