JetOpenTempTable2-Funktion
Gilt für: Windows | Windows Server
JetOpenTempTable2-Funktion
Die JetOpenTempTable2-Funktion erstellt eine temporäre Tabelle mit einem einzelnen Index, der zum Speichern und Abrufen von Datensätzen verwendet werden kann, genau wie eine normale Tabelle, die mit JetCreateTableColumnIndex erstellt wurde. Diese Funktion verfügt auch über eine Gebietsschema-ID, die zum Vergleichen von Unicode-Schlüsselspaltendaten in der temporären Tabelle verwendet werden kann. Temporäre Tabellen sind jedoch aufgrund ihrer volatilen Natur viel schneller als gewöhnliche Tabellen. Sie können auch verwendet werden, um sehr schnell zu sortieren und doppelte Entfernungen in Datensatzsätzen durchzuführen, wenn auf rein sequenzielle Weise zugegriffen wird.
JET_ERR JET_API JetOpenTempTable2(
__in JET_SESID sesid,
__in const JET_COLUMNDEF* prgcolumndef,
__in unsigned long ccolumn,
__in unsigned long lcid,
__in JET_GRBIT grbit,
__out JET_TABLEID* ptableid,
__out JET_COLUMNID* prgcolumnid
);
Parameter
sesid
Die zu verwendende Sitzung.
prgcolumndef
Die Spaltendefinitionen der Spalten, die in der temporären Tabelle erstellt werden sollen.
Für die Spaltendefinitionsoptionen, die mit einer temporären Tabelle verwendet werden, bestehen wichtige Einschränkungen. Weitere Informationen finden Sie im Abschnitt Hinweise.
Neben 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 |
Die Sortierreihenfolge der Schlüsselspalte für die temporäre Tabelle sollte absteigend statt aufsteigend sein. Wenn diese Option ohne JET_bitColumnTTKey angegeben wird, wird diese Option ignoriert. |
JET_bitColumnTTKey |
Die Spalte ist eine Schlüsselspalte für die temporäre Tabelle. 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 diesem Optionssatz ist die wichtigste 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.
lcid
Die Gebietsschema-ID, die zum Vergleichen beliebiger Unicode-Schlüsselspaltendaten in der temporären Tabelle verwendet werden soll.
Jedes Gebietsschema kann verwendet werden, solange das entsprechende Sprachpaket auf dem Computer installiert wurde. Die eine Ausnahme besteht darin, dass das Sprachneutrale Gebietsschema (LCID von null) illegal ist.
Wenn unter Windows Server 2003 und höher das Gebietsschema "Language Neutral" für diesen Parameter angegeben wird, wird stattdessen die Standardgebietsschema-ID (US-Englisch) verwendet. Dies ist, um zuzulassen, dass ein Wert von 0 den Standardwert anstelle eines ungültigen Werts darstellt.
Wenn dieser Parameter nicht vorhanden ist und der pidxunicode-Parameter nicht vorhanden ist, wird die Standard-LCID verwendet, um alle Unicode-Schlüsselspaltendaten in der temporären Tabelle zu vergleichen. Die Standard-LCID ist das us-englische Gebietsschema.
grbit
Eine Gruppe von Bits, die die Optionen enthalten, die für diesen Aufruf verwendet werden sollen, einschließlich null 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 ein Duplikat möglicherweise sofort 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 ausgewä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 temporäre Tabellenmanager 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 Tabellen-Manager, 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, 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. Ein Nebeneffekt 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, dass die temporäre Tabelle flexibel genug ist, um die Verwendung von JetSeek zum Suchen von Datensätzen nach Dem Indexschlüssel 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 temporäre Tabellenmanager 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 die Flexibilität der temporären Tabelle an, 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 temporäre Tabellenmanager möglicherweise eine Strategie für die Verwaltung der temporären Tabelle auswählen, die zu einer verbesserten Leistung führt. |
JET_bitTTSortNullsHigh |
Bei dieser Option wird verlangt, dass null-Schlüsselspaltenwerte näher am Ende des Indexes sortiert werden als werte von Nicht-NULL-Schlüsselspalten. |
JET_bitTTUnique |
Diese Option fordert, dass Datensätze mit doppelten Indexschlüsseln aus dem endgültigen Satz von Datensätzen in der temporären Tabelle entfernt werden. Vor Windows Server 2003 hat die Datenbank-Engine diese Option immer als wirksam angenommen, da alle gruppierten Indizes auch ein Primärschlüssel sein müssen und daher 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 |
Diese Option fordert, 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 temporäre Tabellenmanager möglicherweise eine Strategie für die Verwaltung der temporären Tabelle auswählen, die zu einer verbesserten Leistung führt. |
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 von 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 JET_ERR-Datentyp 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 |
Fehler bei JetOpenTempTable2 , da JET_bitTTForwardOnly angegeben wurde und die angegebene temporäre Tabelle nicht mithilfe der forward-only-Optimierung 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 dem instance, die der Sitzung zugeordnet sind, aufgrund eines Aufrufs von JetStopService beendet wurden. |
JET_errInstanceUnavailable |
Es ist nicht möglich, den Vorgang abzuschließen, da beim instance, der 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 höheren Versionen zurückgegeben. |
JET_errInvalidCodePage |
Das Cp-Feld des JET_COLUMNDEF 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 Coltypfeld des JET_COLUMNDEF wurde nicht auf einen gültigen Spaltentyp festgelegt. |
JET_errIndexInvalidDef |
Der Index konnte nicht erstellt werden, da eine ungültige Indexdefinition angegeben wurde. JetOpenTempTable2 gibt diesen Fehler zurück, wenn:
Dieser Fehler wird nur von Windows 2000 zurückgegeben. |
JET_errInvalidLanguageId |
Der Index konnte nicht erstellt werden, da versucht wurde, eine ungültige Gebietsschema-ID zu verwenden. Die Gebietsschema-ID kann entweder vollständig ungültig oder das zugehörige Sprachpaket nicht installiert sein. |
JET_errInvalidLCMapStringFlags |
Der Index konnte nicht erstellt werden, da versucht wurde, einen ungültigen Satz von Normalisierungsflags zu verwenden. Dieser Fehler wird nur von Windows XP und höheren Versionen zurückgegeben. Unter Windows 2000 führen ungültige Normalisierungsflags stattdessen zu JET_errIndexInvalidDef. |
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 das Modul 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, da nicht genügend Arbeitsspeicher zugewiesen werden konnte, um ihn abzuschließen. JetOpenTempTable2 kann JET_errOutOfMemory zurückgeben, wenn der Adressraum des Hostprozesses zu fragmentiert wird. Der temporäre Tabellen-Manager weist 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 auf dem der Sitzung zugeordneten instance ein Wiederherstellungsvorgang ausgeführt wird. |
JET_errSessionSharingViolation |
Dieselbe Sitzung kann nicht für mehrere Threads gleichzeitig verwendet werden. Dieser Fehler wird nur von Windows XP und höheren 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 das Modul 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 das Modul 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, da das Modul die ressourcen nicht zuordnen kann, die zum Erstellen einer temporären Tabelle erforderlich sind. Temporäre Tabellenressourcen werden mithilfe von JetSetSystemParameter mit JET_paramMaxTemporaryTables konfiguriert. |
Bei Erfolg wird ein für die neu erstellte temporäre Tabelle geöffneter Cursor zurückgegeben. Der Zustand der temporären Datenbank wird so vorbereitet, dass sie die neue temporäre Tabelle enthält. Der Zustand 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 Zustand aller gewöhnlichen Datenbanken, die von der Datenbank-Engine verwendet werden, bleibt unverändert.
Bemerkungen
Siehe JetOpenTempTable.
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
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetRollback
JetSeek
JetSetSystemParameter
Systemparameter