Fonction JetAttachDatabase

S’applique à : Windows | Windows Serveurs

Fonction JetAttachDatabase

La fonction JetAttachDatabase attache un fichier de base de données à utiliser avec une instance de base de données. Pour pouvoir utiliser la base de données, elle doit être ouverte 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 la 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, une ou plusieurs des options suivantes.

Valeur

Signification

JET_bitDbDeleteCorruptIndexes

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

JET_bitDbDeleteUnicodeIndexes

Tous les index des données Unicode seront 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 toute modification de 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 des 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é spécifié 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 est peut-être utilisé par un autre processus ou l’appelant peut ne pas disposer des privilèges suffisants pour ouvrir le fichier.

JET_errFileNotFound

Le fichier spécifié dans szFilename n’existe pas.

JET_errPrimaryIndexCorrupted

Il y a une erreur avec l’index primaire. Cela peut provenir d’une corruption physique (par exemple, un disque ou une altération de la mémoire). Elle peut également être retournée lors de l’attachement d’une base de données qui a été modifiée pour la dernière fois sur un système d’exploitation plus ancien et l’index primaire sur une colonne avec des données Unicode. Pour plus d’informations sur les index sur les données Unicode, consultez les notes.

JET_errSecondaryIndexCorrupted

Il y a une erreur avec un index secondaire. Cela peut provenir d’une corruption physique (par exemple, un disque ou une altération de la mémoire). Elle peut également être retournée lors de l’attachement d’une base de données qui a été modifiée pour la dernière fois sur un système d’exploitation plus ancien et un index secondaire sur une colonne avec des données Unicode. Pour plus d’informations sur les index sur les données Unicode, consultez les notes. Les index secondaires sont entièrement reconstruits lorsqu’une base de données est défragmentée à l’aide d’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 récupérable indiquant que le fichier de base de données a déjà été attaché par cette session.

Remarques

L’appel de JetAttachDatabase équivaut à appeler JetAttachDatabase2 et à passer une valeur de zéro, ce qui signifie qu’il n’y a 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 peut ouvrir le fichier. Il est possible pour plusieurs processus d’attacher 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

les différentes versions de Windows normaliser le texte Unicode de différentes façons. 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 était modifiée (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 signalés par la version de normalisation Unicode avec laquelle ils ont été générés. Les index plus anciens ne contiennent pas d’informations sur la version. La plupart des modifications de normalisation Unicode consistent en l’ajout de nouveaux caractères, tandis que les points de code précédemment non définis sont maintenant définis et normalisés différemment. Par conséquent, si les données binaires sont stockées dans une colonne Unicode, elles se normalssent différemment à mesure que de nouveaux points de code sont définis.

à partir 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. Elles peuvent être utilisées pour corriger un index lorsque l’ensemble de caractères Unicode définis change.

Ces paramètres contrôlent ce qui se produit lorsque le moteur de base de données ESE est attaché à une base de données qui a été utilisée pour la dernière fois sous une version différente du système d’exploitation. La version du système d’exploitation est marquée dans l’en-tête de la 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 supprimera les index potentiellement endommagés si Grbit contient JET_bitDbDeleteCorruptIndexes

  • JetAttachDatabase renvoie une erreur si Grbit ne contient pas de JET_bitDbDeleteCorruptIndexes et si des 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 avait pas d’autres erreurs).

Windows Serveur 2003 et versions ultérieures : si la JET_paramEnableIndexChecking n’a pas été réinitialisée, la table de correction interne est utilisée pour corriger les entrées d’index. Cela peut ne pas résoudre tous les endommagements d’index, mais est transparent 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 une erreur, par exemple JET_errSecondaryIndexCorrupted ou JET_errPrimaryIndexCorrupted.

Configuration requise

| | |

Client

|

requiert 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

|

Requiert ESENT.dll.

| |

Unicode

|

Implémenté en tant que JetAddColumnW (Unicode) et JetAddColumnA (ANSI).

|

Voir aussi

fichiers de moteur d’Stockage Extensible
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase2
JetCreateDatabase
JetDetachDatabase
JetDetachDatabase2
JetOpenDatabase
JetSetSystemParameter