Comment faire pour résoudre et réparer une base de données Access 2002 ou version ultérieure endommagée

Traductions disponibles Traductions disponibles
Numéro d'article: 283849 - Voir les produits auxquels s'applique cet article
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Utilisateur débutant : requiert la connaissance de l'interface utilisateur sur les ordinateurs mono-utilisateur.

Il s'applique uniquement aux bases de données Microsoft Access (.mdb).

Pour obtenir une version Microsoft Access 97 de cet article, reportez-vous à l'article 279334.
Pour vous procurer une version Microsoft Access 2000 de cet article, reportez-vous à l'article 209137.
Agrandir tout | Réduire tout

Sommaire

Résumé

Différents événements, internes ou externes à Access, peuvent survenir et causer l'endommagement de votre fichier de base de données. Les symptômes signalant une base de données endommagée peuvent aller de l'apparition de l'élément #Supprimé dans certains enregistrements à l'impossibilité d'ouvrir un des objets de la base de données, voire à l'impossibilité complète d'ouvrir le fichier de la base de données dans Access. L'utilitaire de compactage et de réparation de Microsoft Access est un outil pratique qui vous permet de tenter d'optimiser ou de réparer les fichiers de bases de données Microsoft Access. Cet article décrit cet utilitaire Access et propose d'autres solutions pour tenter de réparer des bases de données endommagées. Il fournit aussi des informations sur les causes possibles de l'endommagement des bases de données.

Remarque Microsoft Jet, le moteur de base de données utilisé dans Microsoft Access, est un système de base de données de partage de fichiers. Lorsque Microsoft Jet est utilisé dans un environnement multi-utilisateur, plusieurs processus client utilisent des opérations de lecture, d'écriture et de verrouillage de fichiers sur une base de données partagée. Étant donné que plusieurs processus client effectuent des opérations de lecture et d'écriture sur la même base de données et que Jet n'utilise pas de journal de transaction (contrairement aux systèmes de base de données plus avancés, tels que SQL Server), il est impossible d'empêcher de façon fiable l'endommagement des bases de données. Si vous avez besoin d'un système de base de données qui s'exécute 24 heures sur 24, sept jours sur sept dans un environnement multi-utilisateur, Microsoft vous conseille d'utiliser un véritable système de base de données client/serveur qui prend en charge des transactions durables, tel que Microsoft SQL Server.

Plus d'informations

Bien que les étapes décrites dans cet article permettent généralement de récupérer les fichiers de bases de données endommagées, Microsoft vous recommande, pour protéger vos données, de créer une copie de sauvegarde de votre fichier de base de données le plus souvent possible.

Description de l'utilitaire de compactage et de réparation

Compactage d'une base de données

Lorsque vous compactez une base de données, le processus de compactage récupère l'espace inutilisé dans une base de données qui est généré par les suppressions d'objets et d'enregistrements. Pour cela, il crée une base de données de destination et copie chaque objet de l'ancienne base de données dans la nouvelle. Si vous décidez de compacter la base de données sous le nom de la base de données d'origine plutôt que sous un autre nom, le processus de compactage crée une base de données temporaire, exporte tous les objets de la base de données d'origine dans la base de données temporaire, supprime la base de données d'origine, puis renomme la base de données temporaire avec le nom de la base de données d'origine.

La liste suivante répertorie les actions exécutées par le processus de compactage :
  • Réorganisation des pages d'une table de sorte qu'elles résident dans des pages de base de données adjacentes. Cela améliore les performances de la table, puisqu'elle n'est plus fragmentée dans la base de données.
  • Récupération de l'espace inutilisé généré par les suppressions d'objets et d'enregistrements. Lorsque des objets ou des enregistrements sont supprimés de la base de données, l'espace qu'ils occupaient est marqué comme disponible pour les nouveaux ajouts à la base de données. Toutefois, la taille de la base de données reste la même, à moins qu'elle ne soit compactée. Il est recommandé de compacter fréquemment les bases de données ayant des ajouts, suppressions et mises à jour d'objets et d'enregistrements fréquents.
  • Réinitialisation de l'incrémentation des champs NuméroAuto de sorte que la valeur suivante affectée soit supérieure de un à la plus haute valeur dans les enregistrements restants. Par exemple, si tous les enregistrements de la base de données ont été supprimés, une fois la base de données compactée, la valeur dans le champ NuméroAuto aura la valeur 1 lors de l'ajout de l'enregistrement suivant. Si la plus haute valeur NuméroAuto restante dans la base de données est 50, une fois le compactage terminé, cette valeur sera de 51 lors de l'ajout de l'enregistrement suivant. Notez que cela est vrai même si des enregistrements contenant des valeurs supérieures à 50 ont été précédemment ajoutés, mais ont été supprimés avant de procéder au compactage.
  • Régénération des statistiques de tables utilisées dans le processus d'optimisation des requêtes. Ces statistiques peuvent devenir périmées avec le temps, notamment en cas de restauration de transactions ou de fermeture incorrecte de la base de données due à une coupure de courant inattendue ou d'un échec à quitter complètement le programme à l'aide de Microsoft Jet avant d'éteindre l'ordinateur.
  • Balisage de toutes les requêtes de sorte qu'elles soient recompilées à la prochaine exécution de la requête. Cela est important, car les statistiques de base de données peuvent être modifiées et qu'une requête précédemment compilée peut avoir un plan de requête inexact.
Réparation d'une base de données

Le processus de réparation tente de réparer uniquement les tables, les requêtes et les index dans la base de données ; il ne tente pas de réparer les formulaires, les rapports, les macros ou les modules endommagés.

Instructions importantes avant d'exécuter l'utilitaire de compactage et de réparation

Avant d'exécuter l'utilitaire de compactage et de réparation sur une base de données, tenez compte des instructions suivantes :
  • Assurez-vous de disposer de suffisamment d'espace de stockage sur votre disque dur pour pouvoir contenir la version originale et la version compactée de la base de données Access. Cela signifie que votre lecteur doit être capable de contenir au moins deux fois la taille de votre base de données Access. Si vous avez besoin de libérer de l'espace, supprimez tout fichier inutile sur ce lecteur ou, le cas échéant, déplacez la base de données Access sur un lecteur avec plus d'espace libre.
  • Assurez-vous de posséder des autorisations Ouvrir/Exécuter et Ouvrir en exclusif pour la base de données Access. Si vous êtes le propriétaire de la base de données, assurez-vous de définir ces autorisations. Si vous n'êtes pas le propriétaire de la base de données, contactez son propriétaire pour savoir si vous pouvez bénéficier de ces autorisations.
  • Assurez-vous que la base de données Access n'est pas ouverte par d'autres utilisateurs.
  • Assurez-vous que la base de données Access ne se trouve pas sur un partage réseau en lecture seule ou que son attribut de fichier n'est pas en lecture seule.

Étapes à suivre pour tenter de réparer une base de données endommagée

Vous pouvez appliquer la méthode générale suivante pour tenter de réparer une base de données endommagée :
  1. Effectuez une copie du fichier de base de données (.mdb) endommagé pour avoir une sauvegarde.
  2. Supprimez le fichier .ldb le cas échéant. Vous devez fermer le fichier .mdb correspondant avant de supprimer le fichier .ldb.

    Le fichier .ldb sert à déterminer quels enregistrements sont verrouillés dans une base de données partagée, et par qui. Si une base de données est ouverte pour une utilisation partagée, le fichier .ldb est créé avec le même nom que la base de données correspondante (.mdb). Par exemple, si vous ouvrez, pour une utilisation partagée, l'exemple de base de données Comptoir.mdb dans le dossier C:\Msoffice\Access, un fichier intitulé Comptoir.ldb est créé automatiquement dans le même dossier. Le fichier .ldb est supprimé automatiquement après que le dernier utilisateur a quitté la base de données, à deux exceptions près : lorsque le dernier utilisateur n'a pas d'autorisations de suppression sur le dossier contenant le fichier .mdb ou lorsque la base de données est endommagée. Le fichier .ldb contient une liste des utilisateurs qui ont ouvert la base de données.
  3. Exécutez l'utilitaire de compactage et de réparation. Pour cela, procédez comme suit :
    1. Si la base de données est ouverte, fermez-la.
    2. Dans le menu Outils, pointez sur Utilitaires de base de données, puis cliquez sur Compacter une base de données.
    3. Dans la boîte de dialogue Compacter une base de données, sélectionnez le fichier à compacter, puis cliquez sur Compacter.
    4. Dans la boîte de dialogue Compacter la base de données sous, entrez un nouveau nom de fichier, puis cliquez sur Enregistrer.

      Si l'opération de compactage et de réparation échoue, un message s'affichera. Cela signifie que le fichier est trop endommagé pour être réparé.
  4. Si les étapes précédentes n'ont pas permis de restaurer la base de données endommagée, essayez de créer une nouvelle base de données et d'importer les objets, un par un, de l'ancienne base de données vers la nouvelle. Recréez ensuite les relations. Cette technique permet de résoudre les problèmes liés à des tables système endommagées dans la base de données.

    Remarque Vous ne pouvez pas importer des pages d'accès aux données à l'aide de l'Assistant Importation. Au lieu de cela, vous devez ouvrir une page existante d'accès aux données dans la nouvelle base de données. Pour cela, procédez comme suit :
    1. Dans la fenêtre Base de données, cliquez sur Pages sous Objets.
    2. Cliquez sur Nouveau.
    3. Dans la boîte de dialogue Nouvelle page d'accès aux données, cliquez sur Page Web existante, puis sur OK.
    4. Dans la fenêtre Rechercher la page Web, recherchez l'emplacement de la page d'accès aux données.
  5. S'il s'agit d'une table qui est endommagée, et que les procédures précédentes n'ont pas permis de la récupérer, essayez de procéder comme suit :
    1. Dans Microsoft Access, exportez la table dans un fichier ASCII (texte délimité). Pour plus d'informations, consultez la rubrique "Exportation de données ou d'objets de bases de données" dans l'aide Microsoft Access.
    2. Supprimez les relations associées à cette table, puis supprimez la table de la base de données.
    3. Compactez la base de données.
    4. Recréez la table et ses relations.
    5. À l'aide d'un traitement de texte, recherchez des données incorrectes ou inhabituelles dans le fichier ASCII et supprimez ces enregistrements. Enregistrez le fichier au format de fichier texte ASCII.
    6. Réimportez le fichier ASCII dans la table que vous venez de recréer. Pour plus d'informations à ce sujet, effectuez une recherche sur le mot "délimité" dans l'index de l'aide Microsoft Access, puis consultez la rubrique "Importation ou liaison de données ou d'objets".
    7. Entrez à nouveau tous les enregistrements que vous avez dû supprimer.
  6. S'il s'agit d'un formulaire ou d'un état qui est endommagé, l'erreur peut concerner le formulaire ou l'état lui-même, ou un ou plusieurs de ses contrôles. Vous pouvez supprimer le formulaire ou l'état et l'importer à partir de la copie de sauvegarde de votre base de données ou utiliser l'une des options suivantes :
    • Si l'erreur se trouve dans le formulaire ou l'état même, créez un nouveau formulaire ou un nouvel état, puis copiez les contrôles à partir du formulaire ou de l'état d'origine.
    • Si l'erreur se trouve dans un contrôle du formulaire ou de l'état, créez un nouveau formulaire ou un nouvel état, puis recréez les contrôles dans le nouveau formulaire ou le nouvel état. Mieux vaut recréer l'ensemble des contrôles car il est impossible de déterminer ceux qui sont endommagés.
  7. Si l'erreur concerne une macro ou un module, elle peut se trouver dans la macro ou le module même, ou dans leur contenu. Vous pouvez supprimer la macro ou le module et l'importer à partir de la copie de sauvegarde de votre base de données ou utiliser l'une des options suivantes :
    • Si l'erreur se trouve dans la macro ou le module même, créez une nouvelle macro ou un nouveau module, puis copiez les contenus de la macro ou du module d'origine.
    • L'erreur peut impliquer les caractères non-ASCII incorporés dans le module. Enregistrez le module en tant que fichier texte, supprimez les données incorrectes ou inhabituelles, puis rechargez le fichier texte dans un nouveau module.
    • Si l'erreur se trouve dans le contenu de la macro ou du module, vous devez créer une nouvelle macro ou un nouveau module, puis recréer le contenu de la macro ou du module d'origine.
Si vous ne pouvez pas réparer la base de données en suivant ces étapes, elle est sans doute irréparable. Dans ce cas, il est conseillé de restaurer votre dernière sauvegarde de base de données ou de recréer la base de données.

La seule solution qui vous reste est de faire appel à des consultants qui proposent des services de réparation de bases de données Microsoft Access. Étant donné qu'il s'agit d'un service très spécialisé, la manière la plus efficace de rechercher un consultant est d'envoyer un message au groupe de discussion Internet "Groupes d'utilisateurs et de tiers" Microsoft Access à l'adresse suivante :
microsoft.public.access.3rdpartyusrgrp
Pour plus d'informations sur les groupes de discussion Internet Microsoft Access, reportez-vous à l'article suivant dans la Base de connaissances Microsoft. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
287756 Le champ NuméroAuto n'est pas réinitialisé après le compactage d'une base de données

Causes d'endommagement des fichiers .mdb

Il existe trois causes principales d'endommagement d'un fichier mdb :
  • Interruption d'une opération d'écriture
  • Matériel de connexion réseau défectueux
  • Ouverture et enregistrement du fichier .mdb dans un autre programme

Interruption d'une opération d'écriture

Il est fortement conseillé de respecter les consignes d'arrêt d'Access, en cliquant sur Quitter ou sur Fermer dans le menu Fichier. Cependant, si une base de données est ouverte et en cours d'écriture de données lors d'un arrêt anormal d'Access, le moteur de base de données Jet peut marquer le fichier comme suspect/endommagé. Cela peut se produire lorsque l'ordinateur est arrêté manuellement sans avoir préalablement arrêté Windows, ou en cas de coupure de courant. Certaines situations en dehors de l'arrêt d'Access peuvent interférer avec l'écriture de données sur disque par Jet alors que la base de données est ouverte. Cela peut arriver en cas de collisions de données ou de pannes de lecteurs de disques sur un réseau, par exemple. En cas d'interruptions de ce type, Jet marque la base de données comme potentiellement endommagée.

Lorsque Jet commence une opération d'écriture, il définit un indicateur, puis le réinitialise une fois l'opération terminée. En cas d'interruption d'une opération d'écriture, l'indicateur reste défini. Lorsque vous essayez d'ouvrir à nouveau cette base de données, Jet détermine que l'indicateur est défini et signale que la base de données est endommagée. Dans la plupart des cas, la base de données n'est pas réellement endommagée, mais l'indicateur défini prévient Jet d'un tel risque. Dans ce type de cas, le compactage et/ou la réparation de la base de données permettent généralement de restaurer celle-ci. Heureusement, il est possible de déterminer quel utilisateur et quel poste de travail sont à l'origine du marquage du fichier comme suspect. Avec Microsoft Visual Basic pour Applications dans Access, vous pouvez générer une liste des utilisateurs qui sont connectés à une base de données spécifique.
208449 Groupes de discussion Microsoft Access disponibles sur Internet
Pour plus d'informations sur la façon de procéder, reportez-vous à la section "Comment faire pour déterminer les utilisateurs/postes de travail à l'origine du marquage du fichier comme suspect" plus loin dans cet article.

Matériel de connexion réseau défectueux

Dans ce cas, l'endommagement du fichier ne concerne pas le moteur Jet. Par exemple, un matériel de connexion réseau défectueux peut être à l'origine de l'endommagement d'un fichier. Cette cause peut être une ou plusieurs des liaisons de la chaîne matérielle entre l'ordinateur où réside la base de données et l'ordinateur qui a ouvert la base de données. Cela inclut, entre autres, les cartes d'interface réseau, le câblage réseau, les routeurs et les concentrateurs.

Un endommagement d'origine matérielle est généralement signalé par l'existence de fichiers .mdb qu'il est impossible de restaurer à l'aide de l'utilitaire de compactage et de réparation ou de Jetcomp. Un endommagement d'origine matérielle est généralement récurrent, jusqu'à ce que le matériel concerné soit réparé ou remplacé.

Ouverture et enregistrement du fichier .mdb dans un autre programme

Il est impossible de récupérer un fichier .mdb qui a été ouvert, puis enregistré dans un autre programme. Par exemple, vous pouvez ouvrir et enregistrer un fichier .mdb dans Microsoft Word, mais si vous procédez ainsi, le fichier .mdb ne pourrait jamais être récupéré, sauf à partir d'une copie de sauvegarde. Si vous ouvrez accidentellement un fichier .mdb dans une autre application, assurez-vous de l'enregistrer. Il ne sert à rien d'ouvrir un fichier .mdb dans une autre application puisque vous ne verrez qu'une série de caractères apparemment aléatoires.

Comment faire pour identifier les utilisateurs/postes de travail à l'origine du marquage du fichier comme suspect

Lorsque vous cherchez à déterminer la cause de l'endommagement d'une base de données, il peut être nécessaire de vérifier qui est connecté à la base de données. Avec Microsoft Visual Basic pour Applications dans Access 2002 ou Access 2003, vous pouvez accéder à la liste des utilisateurs connectés à une base de données spécifique.
Pour plus d'informations sur la procédure à suivre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
285822 Comment faire pour identifier qui est connecté à une base de données à l'aide de Microsoft Jet UserRoster dans Access 2002 ou dans Access 2003

Mesures à prendre pour éviter les risques d'endommagement

Pour éviter l'endommagement des bases de données, appliquez les conseils suivants :
  • Évitez les risques de coupure de courant lors des écritures sur la base de données. Les coupures de courant peuvent entraîner le marquage de la base de données comme suspecte.
  • Évitez les coupures de connexion avec le réseau.
  • Évitez les déconnexions anormales de Microsoft Jet dues à des coupures de courant, aux arrêts manuels, à l'arrêt de l'application par le Gestionnaire de tâches, etc.
  • Lors de la programmation, fermez tous les objets DAO et ADO que vous avez ouverts, tels que les objets Recordset, QueryDef, TableDef et Database.
  • Des erreurs système irrécupérables aboutissent presque toujours à un arrêt anormal. Si votre base de données est sujette à des erreurs irrécupérables, il est conseillé de résoudre les erreurs avant qu'elle ne soit trop endommagée pour pouvoir être ouverte ou récupérée. Pour plus d'informations sur la façon de procéder et sur l'exemple de code que vous pouvez utiliser, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    285822 Comment faire pour identifier qui est connecté à une base de données à l'aide de Microsoft Jet UserRoster dans Access 2002
    Pour plus d'informations sur les erreurs système irrécupérables, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
    294301 ACC2002 : Comment faire pour résoudre des erreurs système irrécupérables dans Access 2002 sous Microsoft Windows 2000
  • Compactez souvent la base de données.
  • N'exécutez pas IPX sur un serveur Microsoft Windows NT lorsque des bases de données Jet se trouvent sur le réseau et que le client est Microsoft Windows 95 avec IPX/SPX. Au lieu de cela, exécutez le protocole TCP-IP sur le serveur Windows NT et une pile à double protocole IPX/TCP-IP sur le client Windows 95. (Windows NT sur Windows NT avec IPX/SPX n'entraînera pas ce type de problème, de même que Novell sur n'importe quel client.)
  • Évitez d'effectuer trop d'opérations d'ouverture/fermeture (Open/Close) dans une boucle (plus 40 000 opérations successives de ce type peuvent provoquer un endommagement).

Remarque sur les bases de données converties

Dans les versions d'Access antérieures à Access 2002, si des erreurs survenaient au cours de la conversion d'une base de données vers la version actuelle, il n'existait aucun moyen simple pour déterminer les objets qui étaient affectés et ceux qui étaient éventuellement très endommagés.

Lorsque Microsoft Access 2002 ou version ultérieure rencontre une erreur lors de la conversion d'un fichier Access, vous pouvez afficher un résumé de ces erreurs en ouvrant la table Erreurs de conversion dans le nouveau fichier Access. La table Erreurs de conversion contient les colonnes suivantes :

Type objet. Type d'objet de base de données dans lequel Access a rencontré une erreur ou "base de données" si Access a rencontré une erreur non spécifique à un type particulier d'objet.

Nom objet. Nom de l'objet dans lequel Access a rencontré une erreur. Cependant, si Access rencontre une erreur de compilation au cours de la conversion, le nom du module qui contient l'erreur n'est pas spécifié.

Description de l'erreur. Si nécessaire, vous pouvez appuyer sur MAJ+F2 pour afficher la description complète de l'erreur.

Références

Pour plus d'informations sur la réparation de bases de données, cliquez sur Aide sur Microsoft Access dans le menu ? (Aide), tapez réparation dans le Compagnon Office ou dans l'Aide intuitive, puis cliquez sur Rechercher pour afficher la rubrique correspondante. Pour plus d'informations sur le dépannage de bases de données dans les versions antérieures d'Access, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
209137 Comment faire pour dépanner/réparer une base de données Jet 4.0 endommagée
279334 Comment faire pour réparer une base de données Jet 3.5 endommagée
109953 Comment faire pour dépanner/réparer une base de données Jet 3.0 ou version antérieure endommagée
284152 Comment faire pour résoudre les erreurs système irrécupérables dans Access 2002 en cours d'exécution dans Windows Millennium

Propriétés

Numéro d'article: 283849 - Dernière mise à jour: lundi 23 janvier 2006 - Version: 6.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office Access 2003
  • Microsoft Access 2002
Mots-clés : 
kbcorrupt kbtshoot kbhowto KB283849
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com