Fonction JetCreateIndex4W

S’applique à : Windows | Windows Serveurs

la fonction JetCreateIndex4W crée des index sur des données dans une base de données ESE (Extensible Stockage Engine), qui peut être utilisée pour localiser rapidement des données spécifiques.

la fonction JetCreateIndex4W a été introduite dans le système d’exploitation Windows 8.

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

Paramètres

sesid

Contexte de la 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_INDEXCREATE2 , qui définissent chacune un index à créer.

cIndexCreate

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

Valeur de retour

Cette fonction retourne le type de données JET_ERR avec l’un des codes de retour énumérés dans le tableau suivant. 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 sur une colonne de dépôt/mise à jour ou SLV (Notez que les colonnes SLV sont dépréciées) a été tentée.

JET_errColumnNotFound

Une tentative d’indexation sur une colonne inexistante a été effectuée. Une tentative d’index conditionnel 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_INDEXCREATE2 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 primaires pour une table. Une table doit avoir un seul index primaire. Si aucun index primaire 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 raisons possibles pour cette erreur :

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

  • s’applique aux versions de Windows commençant par Windows Server 2003. Une tentative de création d’un index de tuple avec des limites de tuple a été effectuée, mais sans passer d’informations dans le membre ptuplelimits dans JET_INDEXCREATE2 (autrement dit, Grbit a JET_bitIndexTupleLimits défini, mais le pointeur ptuplelimits est null).

  • Passage d’une définition de clé non valide dans le membre szKey de la structure JET_INDEXCREATE2 . Pour plus d’informations sur les définitions valides, consultez JET_INDEXCREATE2.

  • La définition du membre cbVarSegMac dans JET_INDEXCREATE2 est supérieure à JET_cbPrimaryKeyMost (pour un index principal) ou supérieure à JET_cbSecondaryKeyMost (pour un index secondaire).

  • Passage d’une combinaison non valide pour un index Unicode défini par l’utilisateur (un qui a le bit JET_bitIndexUnicode défini dans le membre Grbit de JET_INDEXCREATE2). Certaines causes courantes peuvent être que le champ pidxunicode de la structure JET_INDEXCREATE2 a la valeur 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 primaire.

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

JET_errIndexTuplesInvalidLimits

s’applique aux versions de Windows à partir de Windows XP. Une structure de JET_TUPLELIMITS a été spécifiée et ses limites ne sont pas prises en charge. Pour plus d’informations, consultez la section Notes de la structure JET_TUPLELIMITS .

JET_errIndexTuplesNonUniqueOnly

s’applique aux versions de Windows à partir de Windows XP. 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

s’applique aux versions de Windows à partir de Windows XP. Un index de tuple ne peut être que sur une seule colonne (autrement dit, le membre Grbit de la structure JET_INDEXCREATE2 a JET_bitIndexTuples jeu et le membre szKey de la structure JET_INDEXCREATE2 spécifie plusieurs colonnes).

JET_errIndexTuplesSecondaryIndexOnly

s’applique aux versions de Windows à partir de Windows XP. Un index de tuple ne peut pas être un index primaire (autrement dit, le membre Grbit de la structure JET_INDEXCREATE2 ne doit pas avoir JET_bitIndexPrimary et JET_bitIndexTuples défini).

JET_errIndexTuplesTextColumnsOnly

s’applique aux versions de Windows à partir de Windows XP. Un index de tuple ne peut être que sur une colonne de type texte ou Unicode. Si vous tentez d’indexer d’autres colonnes (par exemple, des colonnes binaires), JET_errIndexTuplesTextColumnsOnly.

JET_errIndexTuplesVarSegMacNotAllowed

s’applique aux versions de Windows à partir de Windows XP. Un index de tuple n’autorise pas la définition du membre cbVarSegMac de la structure JET_INDEXCREATE2 .

JET_errInTransaction

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

JET_errInvalidgrbit

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

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

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

  • Passage d’une structure JET_CONDITIONALCOLUMN avec un membre Grbit non valide. Consultez 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é passé (par le biais du membre LCID dans la structure JET_UNICODEINDEX , que le membre pidxunicode dans la structure JET_INDEXCREATE2 contient un pointeur vers ou via le membre LCID de la structure JET_INDEXCREATE2 ).

JET_errInvalidName

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

JET_errInvalidParameter

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

  • Le champ cbKey d’une structure JET_INDEXCREATE2 a la valeur zéro.

  • Le membre cbStruct d’une structure JET_INDEXCREATE2 n’a pas la valeur sizeof (JET_INDEXCREATE2).

JET_errUnicodeTranslationFail

Une erreur s’est produite lors de la normalisation d’une colonne Unicode. Cela peut être dû à un manque de ressources système.

JET_errSpaceHintsInvalid

Un élément de la structure d’indicateurs d’espace JET n’est pas correct ou n’est pas exploitable.

Notes

La fonction JetCreateIndex4W itère au sein des index fournis dans le paramètre pindexcreate et s’arrête parfois lors du premier échec. Les index qui suivent le premier index avec une erreur n’ont peut-être pas été tentés, même si le membre Err de la structure JET_INDEXCREATE2 contient des JET_errSuccess.

Spécifications

Condition requise Valeur

Client

Requiert Windows 8.

Serveur

Requiert Windows Server 2012.

En-tête

Déclaré dans esent. h.

Bibliothèque

Utilisez ESENT. lib.

DLL

Requiert ESENT.dll.

Voir aussi

JET_CONDITIONALCOLUMN
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXCREATE2
JetCreateIndex
JetCreateTableColumnIndex
JetCreateTableColumnIndex2
JET_SPACEHINTS