Share via


Fonction JetCreateIndex2

S’applique à : Windows | Windows Server

Fonction JetCreateIndex2

La fonction JetCreateIndex2 crée des index sur des données dans une base de données ESE, qui peuvent être utilisés pour localiser rapidement des données spécifiques.

    JET_ERR JET_API JetCreateIndex2(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in          JET_INDEXCREATE* pindexcreate,
      __in          unsigned long cIndexCreate
    );

Paramètres

sesid

Contexte de session de base de données à utiliser pour l’appel d’API.

tableid

Table sur laquelle l’index sera créé.

pindexcreate

Tableau de structures JET_INDEXCREATE , chacune définissant un index à créer.

cIndexCreate

Nombre d’éléments dans le tableau pindexcreate .

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_errCannotIndex

Une tentative d’indexation a été effectuée sur une colonne de mise à jour d’entiercement ou SLV (notez que les colonnes SLV sont déconseillées).

JET_errColumnNotFound

Une tentative d’indexation a été effectuée sur une colonne inexistante. Une tentative d’indexation conditionnelle sur une colonne inexistante peut également générer cette erreur.

JET_errDensityInvalid

Cette erreur est retournée si le membre ulDensity de la structure JET_INDEXCREATE est défini sur un nombre inférieur à 20 ou supérieur à 100.

JET_errIndexDuplicate

Une tentative de définition de deux index identiques a été effectuée.

JET_errIndexHasPrimary

Une tentative a été effectuée pour spécifier plusieurs index principaux pour une table. Une table doit avoir exactement un index principal. Si aucun index principal n’est spécifié, le moteur de base de données en crée un en toute transparence.

JET_errIndexInvalidDef

Une définition d’index non valide a été spécifiée. Voici quelques-unes des raisons possibles de la réception de cette erreur :

  • Un index principal est conditionnel (membre grbit de JET_INDEXCREATE a JET_bitIndexPrimary défini, et le membre cConditionalColumn de JET_INDEXCREATE est supérieur à zéro).

  • Windows Server 2003 et versions ultérieures. Tentative de création d’un index de tuple avec des limites de tuple, mais sans transmettre d’informations dans le membre ptuplelimits dans JET_INDEXCREATE (autrement dit, grbit a JET_bitIndexTupleLimits défini, mais le pointeur ptuplelimits a la valeur NULL).

  • Passage d’une définition de clé non valide dans le membre szKey de la structure JET_INDEXCREATE . Consultez JET_INDEXCREATE pour une discussion sur les définitions valides.

  • Définir le membre cbVarSegMac dans JET_INDEXCREATE être supérieur à JET_cbPrimaryKeyMost (pour un index principal) ou supérieur à JET_cbSecondaryKeyMost (pour un index secondaire).

  • Passage d’une combinaison non valide pour un index Unicode défini par l’utilisateur (dont le bit JET_bitIndexUnicode est défini dans le membre grbit de JET_INDEXCREATE). Certaines causes courantes peuvent être que le champ pidxunicode de la structure JET_INDEXCREATE est NULL, ou que le LCID spécifié dans la structure pidxunicode n’est pas valide.

  • Spécification d’une colonne à valeurs multiples pour un index principal.

  • Tentative d’indexation d’un trop grand nombre de colonnes conditionnelles. Le membre cConditionalColumn de la structure JET_INDEXCREATE ne doit pas être supérieur à JET_ccolKeyMost.

JET_errIndexTuplesInvalidLimits

Windows XP et versions ultérieures. Une structure JET_TUPLELIMITS a été spécifiée et ses limites ne sont pas prises en charge. Consultez la section remarques de la structure JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

Windows XP et versions ultérieures. Un index de tuple ne peut pas être unique (grbit ne doit pas avoir à la fois JET_bitIndexTuples et JET_bitIndexUnique défini).

JET_errIndexTuplesOneColumnOnly

Windows XP et versions ultérieures. Un index de tuple ne peut se trouver que sur une seule colonne (autrement dit, le membre grbit de la structure JET_INDEXCREATE a JET_bitIndexTuples défini, et le membre szKey de la structure JET_INDEXCREATE spécifie plusieurs colonnes).

JET_errIndexTuplesSecondaryIndexOnly

Windows XP et versions ultérieures. Un index de tuple ne peut pas être un index principal (autrement dit, le membre grbit de la structure JET_INDEXCREATE ne doit pas avoir à la fois JET_bitIndexPrimary et JET_bitIndexTuples défini).

JET_errIndexTuplesTextColumnsOnly

Windows XP et versions ultérieures. Un index de tuple ne peut se trouver que sur une colonne texte ou Unicode. Une tentative d’indexation d’autres colonnes (par exemple, des colonnes binaires) entraîne JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

Windows XP et versions ultérieures. Un index de tuple n’autorise pas la définition du membre cbVarSegMac de la structure JET_INDEXCREATE .

JET_errInTransaction

Une tentative de création d’un index sans informations de version a été effectuée lors d’une transaction.

JET_errInvalidgrbit

La définition d’index n’est pas valide, car le membre grbit de la structure JET_INDEXCREATE contient des valeurs incohérentes. Voici quelques raisons possibles :

  • Un index principal avait un bit ignoré spécifié (JET_bitIndexPrimary a été passé avec l’un des JET_bitIndexIgnoreNull, JET_bitIndexIgnoreAnyNull ou JET_bitIndexIgnoreFirstNull).

  • Un index vide n’ignore aucun champ NULL (autrement dit, le membre grbit de la structure JET_INDEXCREATE a JET_bitIndexEmpty défini, mais n’a pas JET_bitIndexIgnoreAnyNull défini).

  • Passage d’une structure JET_CONDITIONALCOLUMN avec un membre grbit non valide. Voir JET_CONDITIONALCOLUMN.

Lors de la création de plusieurs index à la fois (autrement dit, si le paramètre cIndexCreate est supérieur à un), aucun des index ne peut contenir l’un des bits suivants :

  • JET_bitIndexPrimary

  • JET_bitIndexUnversioned

  • JET_bitIndexEmpty

JET_errInvalidLanguageId

Un ID de paramètres régionaux (LCID) non valide a été transmis (soit via le membre lcid de la structure JET_UNICODEINDEX , auquel le membre pidxunicode de la structure JET_INDEXCREATE contient un pointeur, soit via le membre lcid de la structure JET_INDEXCREATE ).

JET_errInvalidName

Un nom d’index non valide a été spécifié. Pour plus d’informations, consultez JET_INDEXCREATE .

JET_errInvalidParameter

Un paramètre non valide a été passé dans l’API. Voici quelques-unes des raisons pour lesquelles cette erreur peut être retournée :

JET_errUnicodeTranslationFail

Une erreur s’est produite lors de la tentative de normalisation d’une colonne Unicode. Cela peut être dû à l’épuisement des ressources système.

Notes

La valeur de retour est JET_errSuccess en cas de réussite de l’exécution de tous les index spécifiés.

JetCreateIndex2 itère au sein des index donnés dans pindexcreate et abandonne parfois lors du premier échec. Il est possible que des index après le premier index avec une erreur n’aient pas été tentés, même si le membre err de la structure JET_INDEXCREATE contient JET_errSuccess.

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.

Unicode

Implémenté en tant que JetCreateIndex2W (Unicode) et JetCreateIndex2A (ANSI).

Voir aussi

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2