Partager via


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 :

  • Les paramètres régionaux non linguistiques sont spécifiés.

  • Un ensemble d’indicateurs de normalisation non valides est spécifié.

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