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 normale Tabelle, die mit JetCreateTableColumnIndex erstellt wurde. Temporäre Tabellen sind aufgrund ihrer flüchtigen Natur jedoch viel schneller als normale Tabellen. Sie können auch verwendet werden, um sehr schnell zu sortieren und doppelte Entfernungen für Datensatzgruppen durchzuführen, wenn auf eine rein sequenzielle Weise 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
Identifiziert 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 können, gelten wichtige Einschränkungen. Weitere Informationen finden Sie im Abschnitt Hinweise.
Zusätzlich zu den üblichen Spaltendefinitionsoptionen können 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 der einzelnen Schlüsselspalten für die temporäre Tabelle. Die erste Spaltendefinition im Array, für die diese Option festgelegt ist, ist die wichtigste Schlüsselspalte und so weiter. 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 Locale ID- und Normalisierungsflags, die zum Vergleichen von 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 Locale.
Wenn dieser Parameter nicht vorhanden ist, werden die Standardnormalisierungsflags verwendet, um 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 für diesen Aufruf zu verwendenden Optionen enthalten, die null oder mehr der folgenden Elemente enthalten.
Wert |
Bedeutung |
|---|---|
JET_bitTTErrorOnDuplicateInsertion |
Diese Option fordert an, dass jeder Versuch, einen Datensatz mit demselben Indexschlüssel wie ein zuvor eingefügter Datensatz einfüge, sofort mit einem JET_errKeyDuplicate. Wenn diese Option nicht angefordert wird, wird möglicherweise sofort ein Duplikat erkannt, das fehlschlägt oder später automatisch entfernt wird. Dies hängt von der Strategie ab, die von der Datenbank-Engine gewählt wurde, um die temporäre Tabelle basierend auf der angeforderten Funktionalität zu implementieren. Wenn diese Funktionalität nicht erforderlich ist, sollten Sie sie nicht anfordern. 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 Tabellen-Manager, jeglichen Versuch zu verabschlagen, 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, kann der Vorgang nicht durchgeführt JET_errCannotMaterializeForwardOnlySort. Ein Nebeneffekt dieser Option besteht im Zulassen, dass die temporäre Tabelle Datensätze mit doppelten Indexschlüsseln enthält. Weitere JET_bitTTUnique finden Sie unter . Diese Option ist nur auf Windows Server 2003 und höher 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 Indexschlüsseln zu ermöglichen. Wenn diese Funktionalität nicht erforderlich ist, sollten Sie sie nicht anfordern. 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 |
Diese Option fordert an, dass Datensätze mit doppelten Indexschlüsseln aus dem letzten 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 ebenfalls 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 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 JET_bitTTErrorOnDuplicateInsertion angefordert wird, wird der erste Datensatz mit einem bestimmten Indexschlüssel, der in die temporäre Tabelle eingefügt werden soll, immer gewonnen. |
JET_bitTTUpdatable |
Diese Option fordert, dass die temporäre Tabelle flexibel genug ist, damit datensätze, die zuvor eingefügt wurden, anschließend geändert werden können. Wenn diese Funktionalität nicht erforderlich ist, sollten Sie sie nicht anfordern. 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, dass die temporäre Tabelle flexibel genug ist, damit Datensätze in beliebiger Reihenfolge und Richtung mit JetMove gescannt werden können. Wenn diese Funktionalität nicht erforderlich ist, sollten Sie sie nicht anfordern. 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 Nullschlüsselspaltenwerte näher am Ende des Indexes sortiert werden als Spaltenwerte, die keine NULL-Schlüsselspalten sind. |
JET_bitTTIntrinsicLVsOnly |
Anforderungen, die nur systeminterne Long-Werte zulassen. Windows 7: JET_bitTTIntrinsicLVsOnly wird in Windows 7 eingeführt. |
Ptableid
Der Ausgabepuffer, der den neuen Cursor erhält, der in der neu erstellten temporären Tabelle geöffnet wird.
prgcolumnid
Der Ausgabepuffer, der das Array von Spalten-IDs erhält, 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 den möglichen ESE-Fehlern finden Sie unter Extensible Storage Engine Errors and Error Handling Parameters.
Rückgabecode |
Beschreibung |
|---|---|
JET_errSuccess |
Der Vorgang wurde erfolgreich abgeschlossen. |
JET_errCannotMaterializeForwardOnlySort |
Fehler bei JetOpenTempTable3, JET_bitTTForwardOnly angegeben wurde und die temporäre Tabelle wie angegeben nicht mit der Vorwärtsoptimierung erstellt werden konnte. Dieser Fehler wird nur von Windows Server 2003 und höher zurückgegeben. |
JET_errClientRequestToStopJetService |
Es ist nicht möglich, den Vorgang abschließen, da alle Aktivitäten auf der -Instanz, die der Sitzung zugeordnet ist, 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 zurück, wenn:
Dieser Fehler wird nur von Windows 2000 zurückgegeben. |
JET_errInstanceUnavailable |
Der Vorgang kann nicht abgeschlossen werden, da für die der Sitzung zugeordnete Instanz 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 xp Windows 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 wurde nicht auf einen gültigen Spaltentyp festgelegt. |
JET_errInvalidLanguageId |
Der Index konnte nicht erstellt werden, da versucht wurde, eine ungültige Locale ID zu verwenden. Die Locale-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 xp Windows und späteren Versionen zurückgegeben. Bei Windows 2000 führen ungültige Normalisierungsflags stattdessen JET_errIndexInvalidDef zurück. |
JET_errInvalidSesid |
Das Sitzungshandy ist ungültig oder verweist auf eine geschlossene Sitzung. Dieser Fehler wird nicht unter allen Umständen zurückgegeben. Handles werden nur nach bestem Aufwand überprüft. |
JET_errNotInitialized |
Der Vorgang kann nicht abgeschlossen werden, da die der Sitzung zugeordnete Instanz noch nicht initialisiert wurde. |
JET_errOutOfCursors |
Der Vorgang ist fehlgeschlagen, da die Engine nicht die Ressourcen zuordnen kann, die zum Öffnen eines neuen Cursors erforderlich sind. Cursorressourcen werden mit JetSetSystemParameter mit JET_paramMaxCursors. |
JET_errOutOfMemory |
Fehler beim Vorgang, da nicht genügend Arbeitsspeicher zugeordnet werden konnte, um ihn abschließen zu können. JetOpenTempTable3 kann JET_errOutOfMemory zurückgeben, wenn der Adressraum des Hostprozesses zu fragmentiert wird. Der temporäre Tabellen-Manager ordnet für jede temporäre Tabelle, die erstellt wird, immer einen Adressraum von 1 MB zu, unabhängig von der zu speichernden Datenmenge. |
JET_errRestoreInProgress |
Der Vorgang kann nicht abgeschlossen werden, da ein Wiederherstellungsvorgang für die -Instanz durchgeführt wird, die der Sitzung zugeordnet ist. |
JET_errSessionSharingViolation |
Dieselbe Sitzung kann nicht gleichzeitig für mehrere Threads verwendet werden. Dieser Fehler wird nur von xp Windows und späteren Versionen zurückgegeben. |
JET_errTermInProgress |
Der Vorgang kann nicht abgeschlossen werden, da die der Sitzung zugeordnete Instanz heruntergefahren wird. |
JET_errTooManyColumns |
Es wurde versucht, der Tabelle zu viele Spalten hinzuzufügen. Eine Tabelle kann nicht mehr als JET_ccolFixedMost spalten, nicht mehr als JET_ccolVarMost Spalten variabler Länge und nicht mehr als JET_ccolTaggedMost spalten enthalten. |
JET_errTooManyOpenIndexes |
Der Vorgang ist fehlgeschlagen, da die Engine nicht die Ressourcen zuordnen kann, die zum Zwischenspeichern der Indizes der Tabelle erforderlich sind. Die Anzahl der Indizes, deren Schema zwischengespeichert werden kann, wird mit JetSetSystemParameter mit JET_paramMaxOpenTables. |
JET_errTooManyOpenTables |
Fehler beim Vorgang, da die Engine nicht die Ressourcen zuordnen kann, die zum Zwischenspeichern des Schemas der Tabelle erforderlich sind. Die Anzahl der Tabellen, deren Schema zwischengespeichert werden kann, wird mit JetSetSystemParameter mit JET_paramMaxOpenTables. |
JET_errTooManySorts |
Der Vorgang ist fehlgeschlagen, da die Engine nicht die Ressourcen zuordnen kann, die zum Erstellen einer temporären Tabelle erforderlich sind. Temporäre Tabellenressourcen werden mit JetSetSystemParameter und JET_paramMaxTemporaryTables. |
Bei Erfolg wird ein Cursor zurückgegeben, der in der neu erstellten temporären Tabelle geöffnet wird. Der Status der temporären Datenbank wird so vorbereitet, dass er die neue temporäre Tabelle enthält. Der Status normaler Datenbanken, die von der Datenbank-Engine verwendet werden, bleibt unverändert.
Bei einem Fehler wird die temporäre Tabelle nicht erstellt, und es wird kein Cursor zurückgegeben. Der Status der temporären Datenbank kann geändert werden. Der Status normaler Datenbanken, die von der Datenbank-Engine verwendet werden, bleibt unverändert.
Requirements (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. |
Header |
Wird in Esent.h deklariert. |
Bibliothek |
Verwenden Sie ESENT.lib. |
DLL |
Erfordert ESENT.dll. |
Weitere Informationen
Erweiterbare Storage Engine-Fehler
Fehlerbehandlungsparameter
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetOpenTempTable
JetRollback
JetSeek
JetSetSystemParameter
Systemparameter