JetOpenTemporaryTable-Funktion

Letzte Änderung: Freitag, 27. Februar 2015

Gilt für: Windows | Windows Server

JetOpenTemporaryTable-Funktion

Die Funktion JetOpenTemporaryTable erstellt eine flüchtige Tabelle mit einem einzelnen Index, der zum Speichern und Abrufen von Datensätzen, wie eine normale Tabelle, die über JetCreateTableColumnIndexerstellt wird.

Windows Vista:  JetOpenTemporaryTable wird in Windows Vista eingeführt.

Temporäre Tabellen sind schneller als normale Tabellen aufgrund ihrer veränderliche Art. Sie können schnell sortieren und zum Entfernen von Duplikaten für Datensätze ausführen, wenn rein sequenziell auf sie zugegriffen wird.

JET_ERR JET_API JetOpenTemporaryTable(
  __in          JET_SESID sesid,
  __in          JET_OPENTEMPORARYTABLE* popentemporarytable
);

Parameter

sesid

Rufen Sie die Sitzung, die für diese verwendet werden.

popentemporarytable

Ein Zeiger auf eine JET_OPENTEMPORARYTABLE -Struktur, die die Beschreibung der zu erstellenden bei der Eingabe der temporären Tabelle enthält. Nach einem erfolgreichen Aufruf enthält die Struktur das Handle für die temporären Tabelle und Spalte Kennungen.

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_errOutOfMemory

Der Vorgang fehlgeschlagen ist, da nicht genügend Speicher zugewiesen werden konnte, um es abzuschließen.

JetOpenTemporaryTable können JET_errOutOfMemory zurück, wenn der Adressraum des Hostprozesses zum zu fragmentiert wird. Die temporäre Tabelle Manager wird weist einen Ausschnitt 1 MB Adressraum für alle temporären Tabelle erstellt, unabhängig von der Menge der Daten gespeichert ist.

JET_errInvalidParameter

Einer der bereitgestellten Parameter, die einen unerwarteten Wert enthalten sind, oder die Kombination der Parameterwerte für verschiedene war der Gesamtumsatz eines unerwarteten Ergebnis.

Dieser Fehler wird unter den folgenden Bedingungen von JetOpenTemporaryTable zurückgegeben:

  • Der CbStruct Member der Struktur JET_OPENTEMPORARYTABLE entspricht nicht auf eine Version dieser Struktur, die von dieser Version des Datenbankmoduls unterstützt wird

  • Das CbKeyMost Mitglied der JET_OPENTEMPORARYTABLE -Struktur ist kleiner als JET_cbKeyMostMin.

  • Der CbKeyMost Member der Struktur JET_OPENTEMPORARYTABLE ist größer als der größte unterstützten Wert für die Seitengröße der Datenbank für die Instanz (JET_paramDatabasePageSize). Finden Sie unter der JET_paramKeyMost-Parameter in der Liste der Informationszwecken Parameter Weitere Informationen.

  • Der CbVarSegMac Member der Struktur JET_OPENTEMPORARYTABLE ist größer als das CbKeyMost -Element.

JET_errNotInitialized

Der Vorgang kann nicht abgeschlossen werden, da die Instanz, die der Sitzung zugeordnet wurde noch nicht initialisiert wurde.

JET_errClientRequestToStopJetService

Der Vorgang kann nicht abgeschlossen werden, da alle Aktivitäten auf die Instanz, die die Sitzung zugeordnet ist aufgrund eines Aufrufs von JetStopServicebehoben ist.

JET_errInstanceUnavailable

Der Vorgang kann nicht abgeschlossen werden, da die Instanz, die die Sitzung zugeordnet ist einen schwerwiegenden Fehler, der erforderlich sind aufgetreten, dass der Zugriff auf alle Daten gesperrt werden, um die Integrität der Daten zu schützen.

Windows XP:  Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

JET_errTermInProgress

Der Vorgang kann nicht abgeschlossen werden, da die Instanz, die die Sitzung zugeordnet ist Herunterfahren.

JET_errRestoreInProgress

Der Vorgang kann nicht abgeschlossen werden, da eine Wiederherstellung ausgeführt auf die Instanz wird, der die Sitzung zugeordnet ist.

JET_errSessionSharingViolation

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

Windows XP:  Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

JET_errInvalidSesid

Handle für die Sitzung ist ungültig oder verweist auf eine geschlossene Sitzung.

Hinweis  Dieser Fehler wird unter allen Umständen nicht zurückgegeben. Behandelt werden best Effort jeweils nur überprüft.

JET_errOutOfCursors

Der Vorgang fehlgeschlagen ist, da das Modul kann nicht die Ressourcen zuordnen, die erforderlich sind, um einen neuen Cursor zu öffnen. Cursor-Ressourcen werden mithilfe von JetSetSystemParameter mit JET_paramMaxCursorskonfiguriert.

JET_errTooManySorts

Der Vorgang fehlgeschlagen ist, da das Modul kann nicht die Ressourcen zuordnen, die zum Erstellen einer temporären Tabelle erforderlich sind. Temporäre Tabelle Ressourcen werden mithilfe von JetSetSystemParameter mit JET_paramMaxTemporaryTableskonfiguriert.

JET_errCannotMaterializeForwardOnlySort

JetOpenTemporaryTable ist fehlgeschlagen, da JET_bitTTForwardOnly angegeben wurde und die temporäre Tabelle, die angegeben wurde konnte nicht erstellt werden mithilfe der Optimierung Vorwärtscursor.

WindowsServer 2003:  Dieser Fehler wird nur von Windows Server 2003 und spätere Versionen zurückgegeben werden.

JET_errTooManyColumns

Es wurde versucht, um die Tabelle zu viele Spalten hinzuzufügen. Eine Tabelle kann nicht mehr als JET_ccolFixedMost festen Spalten, nicht mehr als JET_ccolVarMost variabler Länge Spalten und nicht mehr als JET_ccolTaggedMost Spalten markiert haben.

JET_errTooManyOpenTables

Der Vorgang fehlgeschlagen ist, da das Modul kann nicht die Ressourcen zuordnen, die erforderlich sind, um das Schema der Tabelle zwischenzuspeichern. Um die Anzahl der Tabellen zu konfigurieren, die Schemas, die zwischengespeichert werden kann, verwenden Sie JetSetSystemParameter mit JET_paramMaxOpenTables.

JET_errInvalidCodePage

Der cp -Member der Struktur JET_COLUMNDEF wurde nicht auf eine gültige Codepage festgelegt. Die einzige gültige Werte für Textspalten sind Englisch (1252) und Unicode (1200). Der Wert 0 bedeutet, dass der Standardwert (Englisch, 1252) verwendet.

JET_errInvalidColumnType

Mitglied der JET_COLUMNDEFColtyp wurde nicht auf einen gültigen Spaltentyp festgelegt.

JET_errInvalidLanguageId

Der Index konnte nicht erstellt werden, da versucht wurde, verwenden Sie eine ungültige Gebietsschema-ID. Die Gebietsschema-ID möglicherweise entweder vollständig ungültig oder das entsprechende Sprachpaket nicht installiert.

JET_errInvalidLCMapStringFlags

Der Index konnte nicht erstellt werden, da versucht wurde, verwenden Sie einen ungültigen Satz von Normalisierungsregeln Flags.

Windows XP:  Dieser Fehler wird nur von Windows XP und spätere Versionen zurückgegeben werden.

Windows 2000:  Unter Windows 2000 führt ungültige Normalisierungsflags JET_errIndexInvalidDef.

JET_errIndexInvalidDef

Der Index konnte nicht erstellt werden, da die Definition ein ungültiger Index angegeben wurde. JetOpenTemporaryTable werden unter den folgenden Bedingungen dieser Fehler zurückgegeben:

  • Das Sprache Neutral Gebietsschema wird angegeben.

  • Ein ungültiger Satz von Normalisierungsregeln, die Flags angegeben ist.

Windows 2000:  Dieser Fehler wird nur von Windows 2000 zurückgegeben werden.

JET_errTooManyOpenIndexes

Der Vorgang fehlgeschlagen ist, da das Modul kann nicht die Ressourcen zuordnen, die erforderlich sind, um die Indizes der Tabelle im cache. Um die Anzahl der Indizes zu konfigurieren, die Schemas, die zwischengespeichert werden kann, verwenden Sie JetSetSystemParameter mit JET_paramMaxOpenTables.

Ein Cursor auf die neu erstellte temporäre Tabelle geöffnet werden bei Erfolg zurückgegeben. Der Status der temporäre Datenbank wird die neue temporäre Tabelle enthalten vorbereitet werden. Der Status der normalen Datenbanken von der Datenbank-Engine verwendet, bleiben unverändert.

Bei einem Fehler wird nicht in der temporäre Tabelle erstellt und ein Cursor wird nicht zurückgegeben. Der Status der temporäre Datenbank kann geändert werden. Der Status der normalen Datenbanken von der Datenbank-Engine verwendet, bleiben unverändert.

Anmerkungen

Temporäre Tabellen unterstützen keine umfassenden Spalte Definition Optionen, die normalerweise durch die Datenbank-Engine unterstützt werden. Tatsächlich werden nur JET_bitColumnFixed und JET_bitColumnTagged unterstützt. Dies bedeutet, dass es nicht möglich, eine automatische Inkrementierung, Version oder mit mehreren Werten Spalte in einer temporären Tabelle zu erstellen. Hinterlegten Update Spalten werden schließlich nicht unterstützt, da sie nur von einer Sitzung zu einem Zeitpunkt verwendet werden können. Wenn dieser Optionen sind angefordert werden sie ignoriert werden.

Standardwerte unterstützt temporäre Tabellen nicht. Wenn eine Spaltendefinition ist, vorausgesetzt, die eine Spezifikation des Standard-Wert enthält, werden Spezifikation ignoriert.

Temporäre Tabellen werden mit dem Anrufer als Ergebnis einer viele verschiedene ESE-Funktionen zurückgegeben. Beispielsweise gibt JetGetIndexInfo mit der Option JET_IdxInfo eine temporäre Tabelle mit einer Liste aller Schlüsselspalten in einem angegebenen Index zurück. Die temporären Tabellen führen Sie dieselben Regeln wie für normale temporäre Tabellen Lebenszyklus aus, wie hier beschrieben.

Temporäre Tabellen werden von der Datenbank-Engine für viele Aufgaben auch intern verwendet. Die wichtigste dieser Aufgaben wird die Erstellung eines Indexes über eine vorhandene Tabelle. Die Indexschlüssel sortiert, die verwendet werden, um diesen Index zu erstellen, wird eine temporäre Tabelle verwendet werden.

Alle temporäre Tabellen werden in die temporäre Datenbank gespeichert. Die temporäre Datenbank ist eine spezielle Datenbank-Datei, die während der Lebensdauer einer ESE-Instanz verwaltet wird und wird gelöscht, wenn diese Instanz heruntergefahren oder neu gestartet wird. Der Speicherort der temporären Datenbank kann mithilfe von JetSetSystemParameter mit JET_paramTempPathkonfiguriert werden. Platzierung der temporären Datenbank auf dem Datenträger relativ zu Ihrer Transaktionsprotokolldateien und Datenbankdateien möglicherweise wichtig, wenn die Anwendung bei der umfassenden Verwendung von temporären Tabellen wird oder Indizes häufig erstellt.

Der Lebenszyklus einer temporären Tabelle ist an den Cursor gebunden, die darauf verweisen. Wenn die Cursor, die eine temporäre Tabelle verweisen implizit oder explizit geschlossen werden, wird die temporäre Tabelle gelöscht werden. Wenn eine temporäre Tabelle innerhalb einer Transaktion erstellt wird und dass Transaktion anschließend klicken Sie dann die temporäre Tabelle zurückgesetzt wird werden gelöscht, da alle Cursor, die sie zu diesem Zeitpunkt referenziert implizit geschlossen werden. Neue Cursor können nur durch die Verwendung von JetDupCursoreine temporäre Tabelle verweisen. In diesem Fall werden die neue Cursor auf die erste Indexeintrag der temporären Tabelle positioniert. JetDupCursor funktioniert nur in bestimmten Testphase für die temporäre Tabelle verwenden. Die Erläuterungen temporäre Tabelle Cursor Funktionen für Weitere Informationen zu finden. Es ist nicht möglich, eine temporäre Tabelle von mehr als eine Sitzung zu einem Zeitpunkt zu verweisen.

Vorsicht  Es ist ein wichtiges Problem in JetDupCursor , die temporäre Tabellen wirkt sich auf. Wenn versucht wird, eine temporäre Tabelle duplizieren, die im vorwärts-Modus ist, und klicken Sie dann dem Cursor nicht ordnungsgemäß erstellt und funktioniert. Es ist immer noch sicher ist, um einen Cursor über eine materialisierte temporäre Tabelle zu duplizieren.

Der temporäre Tabellenmanager kann eine temporäre Tabelle auf drei Arten implementieren. Die erste Methode wird zum Aufrechterhalten einer Tabelle im Arbeitsspeicher. Diese Strategie ist die schnellste Methode kann nur für kleine, einfache, temporäre Tabellen verwendet werden. Die zweite Methode ist die Erstellung einer datenträgerbasierter sortieren, die ein Vorwärtscursor einen listenfelditerator gesteuert werden kann. Diese Strategie kann nur unter bestimmten Umständen verwendet werden und ist die schnellste Methode zum Sortieren und Entfernen von Duplikaten aus einem großen DataSet. Die dritte Methode ist die Erstellung einer B +-Struktur in die temporäre Datenbank zum Speichern der temporären Tabelle. Dieser Strategie ist der langsamste, aber vielseitig, und eine materialisierte temporäre Tabelle genannt wird. Diese Strategien können in Kombination verwendet werden, um die Funktionalität letztlich zu erzielen, die der temporären Tabelle angefordert wird.

Wenn die temporäre Tabelle nicht materialisiert ist ist dann hauptsächlich in zwei Hauptphasen verwendet. Die erste Phase ist die Einfügung-Phase, in dem die Tabelle mit seiner ursprünglichen Dataset gefüllt ist. Während dieser Phase ist nur Daten einfügen zulässig. Diese Phase beendet, wenn versucht wird, verschieben Sie den Cursor mit JetMove oder wurde. Die zweite Phase ist die Phase, Daten extrahieren. Während dieser Phase können die Daten, die in der temporären Tabelle gespeichert werden basierend auf den Fähigkeiten extrahiert werden, die beim Erstellen die temporäre Tabelle angefordert wurden.

Temporäre Tabelle Cursor-Funktionen

Wenn die temporäre Tabelle materialisiert ist, wird der Cursor verfügt über die folgenden Funktionen jedoch möglicherweise weiter eingeschränkt werden, durch die Optionen, die angefordert werden:

Wenn die temporäre Tabelle nicht materialisiert wird und befindet sich in der Phase einfügen, der Cursor verfügt über die folgenden Funktionen jedoch möglicherweise weiter eingeschränkt werden, durch die Optionen, die angefordert werden:

Wenn die temporäre Tabelle nicht materialisiert wird und befindet sich in der Phase extrahieren, der Cursor verfügt über die folgenden Funktionen jedoch möglicherweise weiter eingeschränkt werden, durch die Optionen, die angefordert werden:

Voraussetzungen

-Client,

Ist Windows Vista erforderlich.

Server

WindowsServer 2008 erfordert.

Kopfzeile

In Esent.h deklariert.

Library

Verwenden Sie ESENT.lib.

DLL

Erfordert "ESENT.dll".

Siehe auch

JET_ERR
JET_SESID
JET_OPENTEMPORARYTABLE
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetRollback
wurde
JetSetSystemParameter
Informationszwecken Parameter
temporäre Datenbank-Parameter