Fonction JetAttachDatabase

S’applique à : Windows | serveur Windows

Fonction JetAttachDatabase

La fonction JetAttachDatabase attache un fichier de base de données à utiliser avec une instance de base de données. Pour utiliser la base de données, elle doit être ouverte ultérieurement avec JetOpenDatabase.

    JET_ERR JET_API JetAttachDatabase(
      __in          JET_SESID sesid,
      __in          const tchar* szFilename,
      __in          JET_GRBIT grbit
    );

Paramètres

sesid

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

szFilename

Nom de la base de données à attacher.

grbit

Groupe de bits qui spécifient zéro ou plusieurs des options suivantes.

Valeur

Signification

JET_bitDbDeleteCorruptIndexes

Si JET_paramEnableIndexChecking a été défini, tous les index sur les données Unicode sont supprimés. Pour plus d’informations, consultez la section Notes.

JET_bitDbDeleteUnicodeIndexes

Tous les index sur les données Unicode sont supprimés, quel que soit le paramètre de JET_paramEnableIndexChecking. Pour plus d’informations, consultez la section Notes.

JET_bitDbUpgrade

Obsolète. Ne pas utiliser.

JET_bitDbReadOnly

Empêche les modifications apportées à la base de données.

Valeur de retour

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 extensible Stockage et paramètres de gestion des erreurs.

Code de retour

Description

JET_errSuccess

L’opération s’est terminée avec succès.

JET_errBackupInProgress

L’attachement d’une base de données n’est pas autorisé pendant une sauvegarde.

JET_errDatabaseFileReadOnly

Le fichier de base de données spécifié par szFilename doit être accessible en écriture. L’attribut Read-Only ne doit pas être défini et le processus en cours d’exécution doit disposer de privilèges suffisants pour écrire dans le fichier.

JET_errDatabaseInUse

Le fichier de base de données est déjà ouvert par un autre processus.

JET_errDatabaseInvalidPath

Un chemin d’accès non valide a été donné dans szFilename. szFilename doit être non NULL et faire référence à un chemin d’accès valide.

JET_errDatabaseSharingViolation

Le fichier de base de données a déjà été attaché par une autre session.

JET_errFileAccessDenied

Le moteur de base de données ne peut pas ouvrir le fichier de base de données. Le fichier peut être utilisé par un autre processus ou l’appelant n’a peut-être pas suffisamment de privilèges pour ouvrir le fichier.

JET_errFileNotFound

Le fichier donné dans szFilename n’existe pas.

JET_errPrimaryIndexCorrupted

Il existe une erreur avec l’index principal. Cela peut provenir d’une altération physique (par exemple, une altération du disque ou de la mémoire). Il peut également être retourné lors de l’attachement d’une base de données modifiée pour la dernière fois sur un système d’exploitation plus ancien et que l’index principal se trouve sur une colonne avec des données Unicode. Pour plus d’informations sur les index sur les données Unicode, consultez les remarques.

JET_errSecondaryIndexCorrupted

Il existe une erreur avec un index secondaire. Cela peut provenir d’une altération physique (par exemple, une altération du disque ou de la mémoire). Il peut également être retourné lors de l’attachement d’une base de données modifiée pour la dernière fois sur un système d’exploitation plus ancien et qu’un index secondaire se trouve sur une colonne avec des données Unicode. Pour plus d’informations sur les index sur les données Unicode, consultez les remarques. Les index secondaires sont complètement reconstruits lorsqu’une base de données est défragmentée avec un utilitaire hors connexion à l’aide de la commande suivante : esentutl -d.

JET_errTooManyAttachedDatabases

Seul un nombre fini de bases de données peut être attaché par instance. La limite est actuellement de sept bases de données par instance.

JET_wrnDatabaseAttached

Avertissement non fatal indiquant que le fichier de base de données a déjà été attaché par cette session.

Notes

L’appel de JetAttachDatabase équivaut à appeler JetAttachDatabase2 et à passer une valeur égale à zéro, ce qui signifie qu’il n’existe aucune limite, pour le paramètre cpgDatabaseSizeMax .

L’attachement d’une base de données accessible en écriture (autrement dit, si JET_bitDbReadOnly n’a pas été spécifié dans le paramètre grbit ) ouvre le fichier exclusivement au niveau du système d’exploitation. Aucun autre processus ne pourra ouvrir le fichier. Il est possible que plusieurs processus attachent une base de données unique en les ouvrant en mode lecture seule.

Le fichier de base de données est détaché à l’aide de JetDetachDatabase ou JetDetachDatabase2.

Paramètres de vérification d’index

Différentes versions de Windows normaliser le texte Unicode de différentes manières. Cela signifie que les index générés sous une version de Windows peuvent ne pas fonctionner sur d’autres versions.

Avant Windows Server 2003, lorsque la version du système d’exploitation a changé (y compris l’installation d’un Service Pack), chaque index sur les données Unicode était dans un état potentiellement endommagé.

Les index créés dans Windows Server 2003 et versions ultérieures sont marqués avec la version de normalisation Unicode avec laquelle ils ont été générés. Les index plus anciens ne contiennent aucune information de version. La plupart des modifications de normalisation Unicode consistent à ajouter de nouveaux caractères, les points de code qui étaient précédemment non définis sont désormais définis et normalisés différemment. Par conséquent, si des données binaires sont stockées dans une colonne Unicode, elles se normalisent différemment à mesure que de nouveaux points de code sont définis.

À compter de Windows Server 2003, le moteur de base de données ESE effectue le suivi des entrées d’index Unicode qui contiennent des points de code non définis. Ceux-ci peuvent être utilisés pour corriger un index lorsque l’ensemble de caractères Unicode définis change.

Ces paramètres contrôlent ce qui se passe quand le moteur de base de données ESE s’attache à une base de données utilisée pour la dernière fois sous une autre build du système d’exploitation. La version du système d’exploitation est marquée dans l’en-tête de base de données.

Si JET_paramEnableIndexChecking a la valeur TRUE et que la base de données contient des index potentiellement endommagés :

  • JetAttachDatabase supprime les index potentiellement endommagés si grbit contient JET_bitDbDeleteCorruptIndexes

  • JetAttachDatabasewill retourne une erreur si grbit ne contient pas de JET_bitDbDeleteCorruptIndexes et qu’il existe des index qui nécessitent la suppression.

Si JET_paramEnableIndexChecking a la valeur FALSE :

  • JetAttachDatabase ignore les index potentiellement endommagés et retourne JET_errSuccess (en supposant qu’il n’y avait pas d’autres erreurs).

Windows Server 2003 et versions ultérieures : si JET_paramEnableIndexChecking n’a pas été réinitialisé, la table de correction interne sera utilisée pour corriger les entrées d’index. Cela peut ne pas corriger toutes les altérations d’index, mais sera transparente pour l’application.

Si la base de données a été attachée en lecture seule, l’index ne peut pas être fixe ou supprimé. Dans ce cas, l’API retourne à la place une erreur, telle que JET_errSecondaryIndexCorrupted ou JET_errPrimaryIndexCorrupted.

Configuration requise

Condition requise Valeur

Client

Nécessite Windows Vista, Windows XP ou Windows 2000 Professional.

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 JetAddColumnW (Unicode) et JetAddColumnA (ANSI).

Voir aussi

Fichiers de moteur de Stockage extensibles
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase2
JetCreateDatabase
JetDetachDatabase
JetDetachDatabase2
JetOpenDatabase
JetSetSystemParameter