Fonction JetOpenTempTable3
S’applique à : Windows | Windows Server
Fonction JetOpenTempTable3
La fonction JetOpenTempTable3 crée une table temporaire avec un index unique qui peut être utilisé pour stocker et récupérer des enregistrements comme une table ordinaire créée à l’aide de JetCreateTableColumnIndex. Toutefois, les tables temporaires sont beaucoup plus rapides que les tables ordinaires en raison de leur nature volatile. Ils peuvent également être utilisés pour trier et effectuer très rapidement la suppression dupliquée sur les jeux d’enregistrements lorsqu’ils sont accessibles de manière purement séquentielle.
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
);
Paramètres
sesid
Session à utiliser pour cet appel.
prgcolumndef
Identifie les définitions de colonnes des colonnes à créer dans la table temporaire.
Il existe des limitations importantes pour les options de définition de colonne qui peuvent être utilisées avec une table temporaire. Pour plus d'informations, consultez la section Notes.
En plus des options de définition de colonne habituelles, zéro ou plusieurs des options suivantes peuvent également être spécifiées qui sont pertinentes uniquement dans le contexte d’une table temporaire.
Valeur |
Signification |
---|---|
JET_bitColumnTTDescending |
Cette option indique que l’ordre de tri de la colonne clé de la table temporaire doit être décroissant plutôt que croissant. Si cette option est spécifiée sans JET_bitColumnTTKey cette option est ignorée. |
JET_bitColumnTTKey |
Cette option indique que la colonne sera une colonne clé pour la table temporaire. L’ordre des définitions de colonne avec cette option spécifiée dans le tableau d’entrée détermine la priorité de chaque colonne clé pour la table temporaire. La première définition de colonne du tableau avec ce jeu d’options sera la colonne clé la plus significative, et ainsi de suite. Si le moteur de base de données demande plus de colonnes clés que ne peut le prendre en charge, cette option est ignorée pour les colonnes de clé non prises en charge. |
ccolumn
Consultez prgcolumndef.
pidxunicode
ID de paramètres régionaux et indicateurs de normalisation qui seront utilisés pour comparer les données de colonne de clé Unicode dans la table temporaire.
Lorsque ce paramètre n’est pas présent, le LCID par défaut est utilisé pour comparer les colonnes de clé Unicode de la table temporaire. Le LCID par défaut est les paramètres régionaux anglais des États-Unis.
Lorsque ce paramètre n’est pas présent, les indicateurs de normalisation par défaut sont utilisés pour comparer les données de colonne clé Unicode dans la table temporaire. Les indicateurs de normalisation par défaut sont les suivants : NORM_IGNORECASE, NORM_IGNOREKANATYPE et NORM_IGNOREWIDTH.
grbit
Groupe de bits contenant les options à utiliser pour cet appel, qui incluent zéro ou plusieurs des éléments suivants.
Valeur |
Signification |
---|---|
JET_bitTTErrorOnDuplicateInsertion |
Cette option demande que toute tentative d’insertion d’un enregistrement avec la même clé d’index qu’un enregistrement précédemment inséré échoue immédiatement avec JET_errKeyDuplicate. Si cette option n’est pas demandée, un doublon peut être détecté immédiatement et échouer ou peut être supprimé en mode silencieux ultérieurement en fonction de la stratégie choisie par le moteur de base de données pour implémenter la table temporaire en fonction de la fonctionnalité demandée. Si cette fonctionnalité n’est pas requise, il est préférable de ne pas la demander. Si cette fonctionnalité n’est pas demandée, le gestionnaire de tables temporaire peut être en mesure de choisir une stratégie de gestion de la table temporaire qui permettra d’améliorer les performances. |
JET_bitTTForceMaterialization |
Cette option force le gestionnaire de tables temporaire à abandonner toute tentative de choisir une stratégie intelligente de gestion de la table temporaire qui permettra d’améliorer les performances. |
JET_bitTTForwardOnly |
Cette option demande que la table temporaire soit créée uniquement si le gestionnaire de tables temporaire peut utiliser l’implémentation optimisée pour les résultats de requête intermédiaires. Si l’une des caractéristiques de la table temporaire empêche l’utilisation de cette optimisation, l’opération échoue avec JET_errCannotMaterializeForwardOnlySort. L’un des effets secondaires de cette option consiste à autoriser la table temporaire à contenir des enregistrements avec des clés d’index en double. Pour plus d’informations, consultez JET_bitTTUnique. Cette option est disponible uniquement sur Windows Server 2003 et versions ultérieures. |
JET_bitTTIndexed |
Cette option demande que la table temporaire soit suffisamment flexible pour permettre l’utilisation de JetSeek pour rechercher des enregistrements par clé d’index. Si cette fonctionnalité n’est pas requise, il est préférable de ne pas la demander. Si cette fonctionnalité n’est pas demandée, le gestionnaire de tables temporaire peut être en mesure de choisir une stratégie de gestion de la table temporaire qui permettra d’améliorer les performances. |
JET_bitTTUnique |
Cette option demande que les enregistrements avec des clés d’index en double soient supprimés du jeu final d’enregistrements de la table temporaire. Avant Windows Server 2003, le moteur de base de données supposait toujours que cette option était en vigueur en raison du fait que tous les index cluster doivent également être une clé primaire et donc être uniques. À partir de Windows Server 2003, il est désormais possible de créer une table temporaire qui ne supprime PAS les doublons lorsque l’option JET_bitTTForwardOnly est également spécifiée. Il n’est pas possible de savoir quel doublon gagnera et quels doublons seront ignorés en général. Toutefois, lorsque l’option JET_bitTTErrorOnDuplicateInsertion est demandée, le premier enregistrement avec une clé d’index donnée à insérer dans la table temporaire gagne toujours. |
JET_bitTTUpdatable |
Cette option demande que la table temporaire soit suffisamment flexible pour permettre aux enregistrements qui ont déjà été insérés d’être modifiés par la suite. Si cette fonctionnalité n’est pas requise, il est préférable de ne pas la demander. Si cette fonctionnalité n’est pas demandée, le gestionnaire de tables temporaire peut être en mesure de choisir une stratégie de gestion de la table temporaire qui permettra d’améliorer les performances. |
JET_bitTTScrollable |
Cette option demande que la table temporaire soit suffisamment flexible pour permettre l’analyse des enregistrements dans un ordre et une direction arbitraires à l’aide de JetMove. Si cette fonctionnalité n’est pas requise, il est préférable de ne pas la demander. Si cette fonctionnalité n’est pas demandée, le gestionnaire de tables temporaire peut être en mesure de choisir une stratégie de gestion de la table temporaire qui permettra d’améliorer les performances. |
JET_bitTTSortNullsHigh |
Cette option demande que les valeurs de colonne de clé NULL trient plus près de la fin de l’index que les valeurs de colonne de clé non NULL. |
JET_bitTTIntrinsicLVsOnly |
Demande d’autoriser uniquement les valeurs longues intrinsèques. Windows 7 : JET_bitTTIntrinsicLVsOnly est introduit dans Windows 7. |
ptableid
Mémoire tampon de sortie qui recevra le nouveau curseur ouvert sur la table temporaire nouvellement créée.
prgcolumnid
Mémoire tampon de sortie qui recevra le tableau des ID de colonne générés lors de la création de la table temporaire.
Les ID de colonne de ce tableau correspondent exactement au tableau d’entrée des définitions de colonnes. Par conséquent, la taille de cette mémoire tampon doit correspondre à la taille du tableau d’entrée.
Valeur renvoyée
Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour suivants. Pour plus d’informations sur les erreurs ESE possibles, consultez Erreurs du moteur de stockage extensible et Paramètres de gestion des erreurs.
Code de retour |
Description |
---|---|
JET_errSuccess |
L’opération s’est terminée avec succès. |
JET_errCannotMaterializeForwardOnlySort |
JetOpenTempTable3 a échoué, car JET_bitTTForwardOnly a été spécifié et la table temporaire spécifiée n’a pas pu être créée à l’aide de l’optimisation avant uniquement. Cette erreur sera uniquement retournée par Windows Server 2003 et versions ultérieures. |
JET_errClientRequestToStopJetService |
Il n’est pas possible d’effectuer l’opération, car toutes les activités sur le instance associées à la session ont cessé à la suite d’un appel à JetStopService. |
JET_errIndexInvalidDef |
Impossible de créer l’index, car une définition d’index non valide a été spécifiée. JetOpenTempTable3 retourne cette erreur lorsque :
Cette erreur sera uniquement retournée par Windows 2000. |
JET_errInstanceUnavailable |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session a rencontré une erreur irrécupérable qui exige que l’accès à toutes les données soit révoqué pour protéger l’intégrité de ces données. Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. |
JET_errInvalidCodePage |
Le membre cp de la structure JET_COLUMNDEF n’a pas été défini sur une page de code valide. Les seules valeurs valides pour les colonnes de texte sont Anglais (1252) et Unicode (1200). La valeur 0 signifie que la valeur par défaut sera utilisée (anglais, 1252). |
JET_errInvalidColumnType |
Le membre coltyp de la structure JET_COLUMNDEF n’a pas été défini sur un type de colonne valide. |
JET_errInvalidLanguageId |
Impossible de créer l’index, car une tentative d’utilisation d’un ID de paramètres régionaux non valide a été effectuée. L’ID de paramètres régionaux peut être complètement non valide ou le module linguistique associé peut ne pas être installé. |
JET_errInvalidLCMapStringFlags |
L’index n’a pas pu être créé, car une tentative d’utilisation d’un ensemble d’indicateurs de normalisation non valides a été effectuée. Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. Sur Windows 2000, les indicateurs de normalisation non valides entraînent des JET_errIndexInvalidDef à la place. |
JET_errInvalidSesid |
Le handle de session n’est pas valide ou fait référence à une session fermée. Cette erreur n’est pas retournée dans toutes les circonstances. Les handles sont validés uniquement sur la base du meilleur effort. |
JET_errNotInitialized |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session n’a pas encore été initialisé. |
JET_errOutOfCursors |
L’opération a échoué, car le moteur ne peut pas allouer les ressources nécessaires pour ouvrir un nouveau curseur. Les ressources de curseur sont configurées à l’aide de JetSetSystemParameter avec JET_paramMaxCursors. |
JET_errOutOfMemory |
L’opération a échoué, car il n’est pas possible d’allouer suffisamment de mémoire pour la terminer. JetOpenTempTable3 peut retourner JET_errOutOfMemory si l’espace d’adressage du processus hôte devient trop fragmenté. Le gestionnaire de tables temporaire allouera toujours un segment d’espace d’adressage de 1 Mo pour chaque table temporaire créée, quelle que soit la quantité de données à stocker. |
JET_errRestoreInProgress |
Il n’est pas possible d’effectuer l’opération, car une opération de restauration est en cours sur le instance associé à la session. |
JET_errSessionSharingViolation |
La même session ne peut pas être utilisée pour plusieurs threads en même temps. Cette erreur sera retournée uniquement par Windows XP et les versions ultérieures. |
JET_errTermInProgress |
Il n’est pas possible d’effectuer l’opération, car le instance associé à la session est en cours d’arrêt. |
JET_errTooManyColumns |
Une tentative d’ajout de trop de colonnes à la table a été effectuée. Une table ne peut pas avoir plus de JET_ccolFixedMost colonnes fixes, pas plus de JET_ccolVarMost colonnes de longueur variable et pas plus de JET_ccolTaggedMost colonnes étiquetées. |
JET_errTooManyOpenIndexes |
L’opération a échoué, car le moteur ne peut pas allouer les ressources nécessaires pour mettre en cache les index de la table. Le nombre d’index dont le schéma peut être mis en cache est configuré à l’aide de JetSetSystemParameter avec JET_paramMaxOpenTables. |
JET_errTooManyOpenTables |
L’opération a échoué, car le moteur ne peut pas allouer les ressources nécessaires pour mettre en cache le schéma de la table. Le nombre de tables dont le schéma peut être mis en cache est configuré à l’aide de JetSetSystemParameter avec JET_paramMaxOpenTables. |
JET_errTooManySorts |
L’opération a échoué, car le moteur ne peut pas allouer les ressources nécessaires à la création d’une table temporaire. Les ressources de table temporaires sont configurées à l’aide de JetSetSystemParameter avec JET_paramMaxTemporaryTables. |
En cas de réussite, un curseur ouvert sur la table temporaire nouvellement créée est retourné. L’état de la base de données temporaire sera préparé pour contenir la nouvelle table temporaire. L’état des bases de données ordinaires utilisées par le moteur de base de données reste inchangé.
En cas d’échec, la table temporaire n’est pas créée et aucun curseur n’est retourné. L’état de la base de données temporaire peut être modifié. L’état des bases de données ordinaires utilisées par le moteur de base de données reste inchangé.
Spécifications
Condition requise | Valeur |
---|---|
Client |
Nécessite Windows Vista, Windows XP ou Windows 2000 Professionnel. |
Serveur |
Nécessite Windows Server 2008, Windows Server 2003 ou Windows 2000 Server. |
En-tête |
Déclaré dans Esent.h. |
Bibliothèque |
Utilisez ESENT.lib. |
DLL |
Nécessite ESENT.dll. |
Voir aussi
Erreurs du moteur de stockage extensible
Paramètres de gestion des erreurs
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetOpenTempTable
JetRollback
JetSeek
JetSetSystemParameter
Paramètres système