Fonction JetAttachDatabase
S’applique à : Windows | Windows Server
Fonction JetAttachDatabase
La fonction JetAttachDatabase joint un fichier de base de données à utiliser avec une base de données instance. Pour pouvoir utiliser la base de données, vous devez l’ouvrir par la suite 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 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_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é indiqué 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 peut ne pas avoir les privilèges suffisants pour ouvrir le fichier. |
JET_errFileNotFound |
Le fichier fourni dans szFilename n’existe pas. |
JET_errPrimaryIndexCorrupted |
Il existe une erreur avec l’index principal. Il peut s’agir 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 l’index principal se trouve sur une colonne avec des données Unicode. Consultez les remarques pour plus d’informations sur les index sur les données Unicode. |
JET_errSecondaryIndexCorrupted |
Il existe une erreur avec un index secondaire. Il peut s’agir 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 un index secondaire se trouve sur une colonne avec des données Unicode. Consultez les remarques pour plus d’informations sur les index sur les données Unicode. Les index secondaires sont entièrement 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 revient à appeler JetAttachDatabase2 et à transmettre une valeur de zéro, ce qui signifie qu’il n’y a pas de 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 pour plusieurs processus d’attacher une base de données unique en l’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 normalisent le texte Unicode de différentes manières. Cela signifie que les index créé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 changements de normalisation Unicode consistent à ajouter de nouveaux caractères, les points de code qui étaient auparavant 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.
Depuis Windows Server 2003, le moteur de base de données ESE suit les entrées d’index Unicode qui contiennent des points de code non définis. Ils 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 lorsque le moteur de base de données ESE s’attache à une base de données qui a été 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
JetAttachDatabaseretourne une erreur si grbit ne contient pas de JET_bitDbDeleteCorruptIndexes et si certains index doivent être supprimés.
Si JET_paramEnableIndexChecking a la valeur FALSE :
- JetAttachDatabase ignore les index potentiellement endommagés et retourne JET_errSuccess (en supposant qu’il n’y ait 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 est 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 plutôt une erreur, telle que JET_errSecondaryIndexCorrupted ou JET_errPrimaryIndexCorrupted.
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 JetAddColumnW (Unicode) et JetAddColumnA (ANSI). |
Voir aussi
Fichiers du moteur de stockage extensibles
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase2
JetCreateDatabase
JetDetachDatabase
JetDetachDatabase2
JetOpenDatabase
JetSetSystemParameter