Fonction JetOpenTempTable2

S’applique à : Windows | Windows Server

Fonction JetOpenTempTable2

La fonction JetOpenTempTable2 crée une table temporaire avec un seul index qui peut être utilisé pour stocker et récupérer des enregistrements comme une table ordinaire créée à l’aide de JetCreateTableColumnIndex. Cette fonction a également un ID de paramètres régionaux qui peut être utilisé pour comparer les données de colonne clé Unicode dans la table temporaire. 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 des doublons sur les jeux d’enregistrements lorsqu’ils sont accessibles de manière purement séquentielle.

    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
    );

Paramètres

sesid

Session à utiliser.

prgcolumndef

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 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 ne sont pertinentes que dans le contexte d’une table temporaire.

Valeur

Signification

JET_bitColumnTTDescending

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

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 dans le tableau avec ce jeu d’options sera la colonne clé la plus significative, et ainsi de suite. Si plus de colonnes clés sont demandées que le moteur de base de données ne peut le prendre en charge, cette option est ignorée pour les colonnes clés non prises en charge.

ccolumn

Consultez prgcolumndef.

lcid

ID de paramètres régionaux à utiliser pour comparer les données de colonne clé Unicode dans la table temporaire.

Tous les paramètres régionaux peuvent être utilisés tant que le module linguistique approprié a été installé sur l’ordinateur. La seule exception est que les paramètres régionaux language neutral (LCID de zéro) sont illégaux.

Sur Windows Server 2003 et versions ultérieures, si les paramètres régionaux non linguistiques sont spécifiés pour ce paramètre, l’ID de paramètres régionaux par défaut (anglais américain) est utilisé à la place. Il s’agit de permettre à une valeur de zéro de signifier la valeur par défaut plutôt qu’une valeur non conforme.

Lorsque ce paramètre n’est pas présent et que le paramètre pidxunicode n’est pas présent, le LCID par défaut est utilisé pour comparer les données de colonne clé Unicode dans la table temporaire. Le LCID par défaut est les paramètres régionaux anglais des États-Unis.

grbit

Groupe de bits qui contiennent 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 ê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 se traduira par une amélioration des performances.

JET_bitTTForceMaterialization

Cette option force le gestionnaire de tables temporaires à abandonner toute tentative de choisir une stratégie intelligente de gestion de la table temporaire qui se traduira par une amélioration des performances.

JET_bitTTForwardOnly

Cette option demande que la table temporaire soit créée uniquement si le gestionnaire de tables temporaires peut utiliser l’implémentation optimisée pour les résultats de requête intermédiaires. Si une caractéristique de la table temporaire empêche l’utilisation de cette optimisation, l’opération échoue avec JET_errCannotMaterializeForwardOnlySort.

Un effet secondaire de cette option est d’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 se traduira par une amélioration des 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 se traduira par une amélioration des performances.

JET_bitTTSortNullsHigh

Cette option demande que les valeurs de colonne clé NULL trient plus près de la fin de l’index que les valeurs de colonne de clé non NULL.

JET_bitTTUnique

Cette option demande que les enregistrements avec des clés d’index en double soient supprimés du jeu d’enregistrements final de la table temporaire.

Avant Windows Server 2003, le moteur de base de données supposait toujours que cette option était en vigueur, car tous les index cluster devaient également être une clé primaire et, par conséquent, être uniques. Depuis 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 quels doublons gagneront 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 précédemment 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 se traduira par une amélioration des performances.

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 dans ce tableau correspondent exactement au tableau d’entrée des définitions de colonne. 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

Échec de JetOpenTempTable2 , 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 ne sera retournée que 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ée à la session ont cessé à la suite d’un appel à JetStopService.

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 nécessite 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 champ cp du JET_COLUMNDEF n’a pas été défini sur une page de codes 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 champ coltyp du JET_COLUMNDEF n’a pas été défini sur un type de colonne valide.

JET_errIndexInvalidDef

Impossible de créer l’index, car une définition d’index non valide a été spécifiée.

JetOpenTempTable2 retourne cette erreur dans les cas suivants :

  • 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_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_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.

JetOpenTempTable2 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é.

Notes

Consultez JetOpenTempTable.

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

JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetRollback
JetSeek
JetSetSystemParameter
Paramètres système