Funzione JetOpenTempTable3
Si applica a: Windows | Windows Server
Funzione JetOpenTempTable3
La funzione JetOpenTempTable3 crea una tabella temporanea con un singolo indice che può essere usato per archiviare e recuperare record come una tabella normale creata usando JetCreateTableColumnIndex. Tuttavia, le tabelle temporanee sono molto più veloci rispetto alle tabelle normali a causa della loro natura volatile. Possono anche essere usati per ordinare in modo molto rapido ed eseguire la rimozione duplicata nei set di record quando si accede in modo puramente sequenziale.
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
);
Parametri
sesid
Sessione da usare per questa chiamata.
prgcolumndef
Identifica le definizioni di colonna delle colonne da creare nella tabella temporanea.
Le limitazioni importanti esistono per le opzioni di definizione della colonna che possono essere usate con una tabella temporanea. Per altre informazioni, vedere la sezione Osservazioni.
Oltre alle opzioni di definizione di colonna consuete, è possibile specificare zero o più delle opzioni seguenti che sono rilevanti solo nel contesto di una tabella temporanea.
Valore |
Significato |
---|---|
JET_bitColumnTTDescending |
Questa opzione indica che l'ordinamento della colonna chiave per la tabella temporanea deve essere decrescente anziché crescente. Se questa opzione viene specificata senza JET_bitColumnTTKey, questa opzione viene ignorata. |
JET_bitColumnTTKey |
Questa opzione indica che la colonna sarà una colonna chiave per la tabella temporanea. L'ordine delle definizioni di colonna con questa opzione specificata nella matrice di input determina la precedenza di ogni colonna chiave per la tabella temporanea. La prima definizione di colonna nella matrice con questo set di opzioni sarà la colonna chiave più significativa e così via. Se sono richieste più colonne chiave di quanto possa essere supportato dal motore di database, questa opzione viene ignorata per le colonne chiave non supportate. |
ccolumn
Vedere prgcolumndef.
pidxunicode
ID delle impostazioni locali e flag di normalizzazione che verranno usati per confrontare i dati delle colonne chiave Unicode nella tabella temporanea.
Quando questo parametro non è presente, verrà usato l'LCID predefinito per confrontare le colonne chiave Unicode nella tabella temporanea. LCID predefinito è le impostazioni locali inglese degli Stati Uniti.
Quando questo parametro non è presente, verranno usati i flag di normalizzazione predefiniti per confrontare i dati delle colonne chiave Unicode nella tabella temporanea. I flag di normalizzazione predefiniti sono: NORM_IGNORECASE, NORM_IGNOREKANATYPE e NORM_IGNOREWIDTH.
grbit
Un gruppo di bit che contengono le opzioni da usare per questa chiamata, che includono zero o più dei seguenti.
Valore |
Significato |
---|---|
JET_bitTTErrorOnDuplicateInsertion |
Questa opzione richiede che qualsiasi tentativo di inserimento di un record con la stessa chiave di indice di un record inserito in precedenza avrà esito negativo immediatamente con JET_errKeyDuplicate. Se questa opzione non viene richiesta, un duplicato può essere rilevato immediatamente e può essere rimosso in modo silenzioso in seguito a seconda della strategia scelta dal motore di database per implementare la tabella temporanea in base alla funzionalità richiesta. Se questa funzionalità non è necessaria, è preferibile non richiederla. Se questa funzionalità non è richiesta, la gestione tabelle temporanee può essere in grado di scegliere una strategia per la gestione della tabella temporanea che comporterà un miglioramento delle prestazioni. |
JET_bitTTForceMaterialization |
Questa opzione impone al gestore tabelle temporanee di abbandonare qualsiasi tentativo di scegliere una strategia intelligente per la gestione della tabella temporanea che comporterà prestazioni migliorate. |
JET_bitTTForwardOnly |
Questa opzione richiede che la tabella temporanea venga creata solo se la gestione tabelle temporanee può usare l'implementazione ottimizzata per i risultati delle query intermedie. Se una caratteristica della tabella temporanea impedisce l'uso di questa ottimizzazione, l'operazione avrà esito negativo con JET_errCannotMaterializeForwardOnlySort. Un effetto collaterale di questa opzione consiste nell'consentire alla tabella temporanea di contenere record con chiavi di indice duplicate. Per altre informazioni, vedere JET_bitTTUnique. Questa opzione è disponibile solo nelle versioni di Windows Server 2003 e versioni successive. |
JET_bitTTIndexed |
Questa opzione richiede che la tabella temporanea sia abbastanza flessibile per consentire l'uso di JetSeek per cercare i record in base alla chiave di indice. Se questa funzionalità non è necessaria, è preferibile non richiederla. Se questa funzionalità non è richiesta, la gestione tabelle temporanee può essere in grado di scegliere una strategia per la gestione della tabella temporanea che comporterà un miglioramento delle prestazioni. |
JET_bitTTUnique |
Questa opzione richiede che i record con chiavi di indice duplicati vengano rimossi dal set finale di record nella tabella temporanea. Prima di Windows Server 2003, il motore di database ha sempre assunto questa opzione a causa del fatto che tutti gli indici cluster devono essere anche una chiave primaria e quindi devono essere univoci. A partire da Windows Server 2003, è ora possibile creare una tabella temporanea che non rimuove duplicati quando viene specificata anche l'opzione JET_bitTTForwardOnly. Non è possibile sapere quale duplicato vincerà e quali duplicati verranno eliminati in generale. Tuttavia, quando l'opzione JET_bitTTErrorOnDuplicateInsertion viene richiesta, il primo record con una determinata chiave di indice da inserire nella tabella temporanea verrà sempre vinto. |
JET_bitTTUpdatable |
Questa opzione richiede che la tabella temporanea sia abbastanza flessibile per consentire la modifica dei record inseriti in precedenza. Se questa funzionalità non è necessaria, è preferibile non richiederla. Se questa funzionalità non è richiesta, la gestione tabelle temporanee può essere in grado di scegliere una strategia per la gestione della tabella temporanea che comporterà un miglioramento delle prestazioni. |
JET_bitTTScrollable |
Questa opzione richiede che la tabella temporanea sia abbastanza flessibile per consentire l'analisi dei record in ordine arbitrario e direzione usando JetMove. Se questa funzionalità non è necessaria, è preferibile non richiederla. Se questa funzionalità non è richiesta, la gestione tabelle temporanee può essere in grado di scegliere una strategia per la gestione della tabella temporanea che comporterà un miglioramento delle prestazioni. |
JET_bitTTSortNullsHigh |
Questa opzione richiede che i valori di colonna chiave NULL siano ordinati più vicino alla fine dell'indice rispetto ai valori di colonna chiave NON NULL. |
JET_bitTTIntrinsicLVsOnly |
Richieste per consentire solo valori intrinseci a lungo termine. Windows 7: JET_bitTTIntrinsicLVsOnly è stato introdotto in Windows 7. |
ptableid
Buffer di output che riceverà il nuovo cursore aperto nella tabella temporanea appena creata.
prgcolumnid
Buffer di output che riceverà la matrice di ID di colonna generati durante la creazione della tabella temporanea.
Gli ID di colonna in questa matrice corrispondono esattamente alla matrice di input delle definizioni di colonna. Di conseguenza, le dimensioni di questo buffer devono corrispondere alle dimensioni della matrice di input.
Valore restituito
Questa funzione restituisce il tipo di dati JET_ERR con uno dei codici restituiti seguenti. Per altre informazioni sugli errori ESE possibili, vedere Errori del motore di archiviazione estendibili e parametri di gestione degli errori.
Codice restituito |
Descrizione |
---|---|
JET_errSuccess |
Operazione riuscita. |
JET_errCannotMaterializeForwardOnlySort |
JetOpenTempTable3 non è riuscito perché è stato specificato JET_bitTTForwardOnly e la tabella temporanea come specificato non è stato possibile creare usando l'ottimizzazione solo in avanti. Questo errore verrà restituito solo da Windows Server 2003 e versioni successive. |
JET_errClientRequestToStopJetService |
Non è possibile completare l'operazione perché tutte le attività nell'istanza associata alla sessione non sono state interrotte in seguito a una chiamata a JetStopService. |
JET_errIndexInvalidDef |
Impossibile creare l'indice perché è stata specificata una definizione di indice non valida. JetOpenTempTable3 restituirà questo errore quando:
Questo errore verrà restituito solo da Windows 2000. |
JET_errInstanceUnavailable |
Non è possibile completare l'operazione perché l'istanza associata alla sessione ha rilevato un errore irreversibile che richiede che l'accesso a tutti i dati venga revocato per proteggere l'integrità dei dati. Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errInvalidCodePage |
Il membro cp della struttura JET_COLUMNDEF non è stato impostato su una tabella codici valida. Gli unici valori validi per le colonne di testo sono inglese (1252) e Unicode (1200). Il valore 0 indica che verrà usato il valore predefinito (inglese, 1252). |
JET_errInvalidColumnType |
Il membro coltyp della struttura JET_COLUMNDEF non è stato impostato su un tipo di colonna valido. |
JET_errInvalidLanguageId |
Impossibile creare l'indice perché è stato effettuato un tentativo di utilizzo di un ID delle impostazioni locali non valido. L'ID delle impostazioni locali potrebbe non essere completamente valido o il Language Pack associato potrebbe non essere installato. |
JET_errInvalidLCMapStringFlags |
Impossibile creare l'indice perché è stato effettuato un tentativo di utilizzo di un set non valido di flag di normalizzazione. Questo errore verrà restituito solo da Windows XP e versioni successive. In Windows 2000 i flag di normalizzazione non validi genereranno invece JET_errIndexInvalidDef. |
JET_errInvalidSesid |
L'handle di sessione non è valido o fa riferimento a una sessione chiusa. Questo errore non viene restituito in tutte le circostanze. Gli handle vengono convalidati solo in base al massimo sforzo. |
JET_errNotInitialized |
Non è possibile completare l'operazione perché l'istanza associata alla sessione non è ancora stata inizializzata. |
JET_errOutOfCursors |
L'operazione non è riuscita perché il motore non può allocare le risorse necessarie per aprire un nuovo cursore. Le risorse del cursore vengono configurate usando JetSetSystemParameter con JET_paramMaxCursors. |
JET_errOutOfMemory |
L'operazione non è riuscita perché non è possibile allocare memoria sufficiente per completarla. JetOpenTempTable3 può restituire JET_errOutOfMemory se lo spazio degli indirizzi del processo host diventa troppo frammentato. Gestione tabelle temporanee allocherà sempre un blocco di 1 MB di spazio indirizzi per ogni tabella temporanea creata indipendentemente dalla quantità di dati da archiviare. |
JET_errRestoreInProgress |
Non è possibile completare l'operazione perché è in corso un'operazione di ripristino nell'istanza associata alla sessione. |
JET_errSessionSharingViolation |
La stessa sessione non può essere usata contemporaneamente per più thread. Questo errore verrà restituito solo da Windows XP e versioni successive. |
JET_errTermInProgress |
Non è possibile completare l'operazione perché l'istanza associata alla sessione viene arrestata. |
JET_errTooManyColumns |
È stato effettuato un tentativo di aggiungere troppe colonne alla tabella. Una tabella non può contenere più di JET_ccolFixedMost colonne fisse, non più di JET_ccolVarMost colonne a lunghezza variabile e non più di JET_ccolTaggedMost colonne con tag. |
JET_errTooManyOpenIndexes |
L'operazione non è riuscita perché il motore non può allocare le risorse necessarie per memorizzare nella cache gli indici della tabella. Il numero di indici il cui schema può essere memorizzato nella cache viene configurato usando JetSetSystemParameter con JET_paramMaxOpenTables. |
JET_errTooManyOpenTables |
Operazione non riuscita perché il motore non può allocare le risorse necessarie per memorizzare nella cache lo schema della tabella. Il numero di tabelle il cui schema può essere memorizzato nella cache viene configurato usando JetSetSystemParameter con JET_paramMaxOpenTables. |
JET_errTooManySorts |
L'operazione non è riuscita perché il motore non può allocare le risorse necessarie per creare una tabella temporanea. Le risorse di tabella temporanee vengono configurate usando JetSetSystemParameter con JET_paramMaxTemporaryTables. |
In caso di esito positivo, verrà restituito un cursore aperto nella tabella temporanea appena creata. Lo stato del database temporaneo verrà preparato per contenere la nuova tabella temporanea. Lo stato di tutti i database ordinari in uso dal motore di database rimarrà invariato.
In caso di errore, la tabella temporanea non verrà creata e non verrà restituito un cursore. Lo stato del database temporaneo può essere modificato. Lo stato di tutti i database ordinari in uso dal motore di database rimarrà invariato.
Requisiti
Requisito | Valore |
---|---|
Client |
Richiede Windows Vista, Windows XP o Windows 2000 Professional. |
Server |
Richiede Windows Server 2008, Windows Server 2003 o Windows 2000 Server. |
Intestazione |
Dichiarato in Esent.h. |
Libreria |
Usare ESENT.lib. |
DLL |
Richiede ESENT.dll. |
Vedere anche
Errori del motore di archiviazione estendibile
Parametri di gestione degli errori
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetOpenTempTable
JetRollback
JetSeek
JetSetSystemParameter
Parametri di sistema