Numéro d'article: 109953 - Dernière mise à jour: mercredi 26 janvier 2005 - Version: 2.1

ACC : Comment faire pour dépanner/réparer endommagé Jet 3.0 et précédentes de bases de données

A noterCet article s'applique à un système d'exploitation différent de celui que vous utilisez. Le contenu de l'article qui ne vous concerne peut-être pas est désactivé.
Novice : Nécessite une connaissance de l'interface utilisateur sur les ordinateurs mono-utilisateur.

Sommaire

Agrandir tout | Réduire tout

Résumé

Facteurs environnementaux peuvent causer l'endommagement de votre fichier de base de données. Les symptômes d'une base de données endommagée peuvent aller de l'apparition de certains enregistrements à l'impossibilité d'ouvrir un des objets dans la base de données, à l'impossibilité complète d'ouvrir le fichier dans Access. Les utilitaires de réparation et de compactage de Microsoft Access sont des outils utiles pour récupérer et optimiser les fichiers de base de données Microsoft Access. Cet article décrit ces utilitaires et propose d'autres solutions pour la réparation de bases de données endommagées. En outre, des informations sur ce qui peut provoquer une corruption sont fournies.

Remarque : Cet article traite uniquement de bases de données antérieures à Access 97. Pour plus d'informations sur la résolution des problèmes de bases de données dans les versions ultérieures d'Access, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
279334  (http://support.microsoft.com/kb/279334/EN-US/ ) ACC97 : Comment faire pour réparer une base de données Jet 3.5 endommagée
209137  (http://support.microsoft.com/kb/209137/EN-US/ ) ACC2000 : Comment faire pour réparer une base de données endommagée

Plus d'informations

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

La réparation et les utilitaires Compact

L'utilitaire de réparation

L'utilitaire de réparation peut résoudre des bases de données avec certains types de dommages. Il essaie de réparer uniquement les tables, requêtes et les index dans la base de données. Il n'essaie pas de réparer endommagés formulaires, états, macros ou modules ; il n'est le cas, toutefois, les copier dans la nouvelle base de données réparée.

Remarque : Exécutez la commande Réparer une base de données uniquement lorsque le moteur de base de données Microsoft Jet renvoie un message d'erreur indiquant que la réparation doit être exécutée. La commande Réparer une base de données ne doit pas être exécutée dans d'autres circonstances.

Utilitaire Compact

L'utilitaire de compactage élimine les espaces vides dans une base de données existante. Il le fait en créant une nouvelle base de données de destination et copie chaque objet de l'ancienne base de données vers le nouveau. Si vous décidez de compacter la base de données dans le nom de la base de données d'origine au lieu d'une nouvelle base de données, l'utilitaire de compactage crée une base de données temporaire, exporte tous les objets à partir de la base de données d'origine dans la base de données temporaire, supprime la base de données d'origine et renomme la base de données temporaire au nom de la base de données d'origine.

IMPORTANT : compression souvent de la base de données est la meilleure maintenance préventive pour un fichier .mdb. Voici une liste des actions exécutées par l'utilitaire de compactage.
  • Réorganisation des pages d'une table afin qu'elles résident dans des pages adjacentes de la base de données. Cela améliore les performances étant donné que la table 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 à partir de la base de données, l'espace qu'ils occupés 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, sauf si la base de données est compactée. Pour les bases de données dans laquelle enregistrements et objets sont fréquemment ajoutées, supprimées et mis à jour, vous devez compacter fréquemment.
  • Réinitialisation incrémentation champs NuméroAuto de sorte que la valeur suivante affectée soit un plus à la valeur la plus élevée dans les autres enregistrements. Par exemple, si tous les enregistrements dans la base de données ont été supprimés, après le compactage de la base de données la valeur dans le champ NuméroAuto sera 1 lorsque l'enregistrement suivant est ajouté. Si la plus haute valeur NuméroAuto restante dans la base de données est 50, après l'avoir compacté la valeur est alors 51 lors de l'enregistrement suivant est ajouté. Notez que cela est vrai même si les enregistrements contenant des valeurs supérieures à 50 ont été précédemment ajoutés, mais ont été supprimés avant le compactage.
  • Régénère les statistiques de la table utilisées dans le processus d'optimisation des requêtes. Ces statistiques peuvent devenir obsolètes au fil du temps, généralement si les transactions ont été annulées ou si la base de données n'a pas été correctement fermé en raison de coupures d'alimentation ou l'é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 fois que la requête est exécutée. Ceci est important, car les statistiques de la base de données peut modifier et d'une requête précédemment compilée peut avoir un plan de requête inexactes.

Instructions importantes pour le compactage d'une base de données

Avant de la compacter une base de données, les conditions suivantes doivent être remplies :

L'utilisateur le compactage de la base de données doit être connecté en utilisant un compte qui possède de modifier la structure ou administrer les autorisations de sécurité pour toutes les tables dans la base de données. Pour plus d'informations sur la sécurité de Microsoft Jet, consultez le chapitre 10, «Gestion de la sécurité».

Suffisamment d'espace disque doit exister pour les deux versions d'origine et compactées de la base de données, même si la base de données est en cours compactée par l'intermédiaire de l'interface utilisateur de Microsoft Access en utilisant le même nom de fichier. La base de données compactée est renommée comme la base de données d'origine uniquement lors du compactage a réussi.

Autres utilisateurs ne doivent pas avoir de la base de données à ouvrir. Lorsqu'une base de données est compactée, elle doit être ouverte exclusivement par Microsoft Jet afin d'empêcher d'autres utilisateurs à partir de l'accès et la modification de la base de données au cours du processus.

Récupération d'une base de données endommagée

Remarque : Si vous rencontrez des numéros d'erreur Microsoft Jet 3.x 3197, 3343 ou 3015, reportez-vous à l'article suivant dans la base de connaissances Microsoft :
182867  (http://support.microsoft.com/kb/182867/EN-US/ ) ACC : Moteur de base de données Jet 3.x messages d'erreur suite à la corruption de la
Les étapes suivantes présentent une méthode générale permettant de réparer une base de données endommagée :
  1. Si vous disposez de Microsoft Access version 2.0, procurez-vous le Service Pack de Microsoft Access 2.0 si vous obtenez un des messages d'erreur suivant dans un environnement multi-utilisateur :
    -Impossible d'ouvrir System.mda
    - ou -
    -<database>du est endommagé ou n'est pas un fichier de base de données. Tenter de réparer ?
    Parallèlement à résoudre le problème mentionné ci-dessus, le Service Pack inclut également un utilitaire de réparation amélioré. Pour plus d'informations sur le Service Pack, consultez les articles suivants dans la base de connaissances Microsoft :
    123589  (http://support.microsoft.com/kb/123589/EN-US/ ) ACC2 : Message d'erreur "Impossible ouvrir System.MDA"
    123823  (http://support.microsoft.com/kb/123823/EN-US/ ) ACC2 : MS Access Version 2.0 Service Pack Questions et réponses
    123588  (http://support.microsoft.com/kb/123588/EN-US/ ) ACC2 : Utilitaire de réparation de Microsoft Access amélioré
  2. Sauvegarder le fichier de base de données (.mdb) endommagé.
  3. Supprimez le fichier .ldb si elle est présente. Le fichier .mdb correspondant doit être fermé avant la suppression de ce fichier.

    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, puis un fichier appelé Comptoir.ldb est créé automatiquement dans le même dossier. Dans Microsoft Access 7.0 et 97, 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 supprimer des autorisations au dossier contenant le fichier .mdb ou lorsque la base de données est endommagée.

    Pour plus d'informations sur les fichiers .ldb, veuillez consulter les articles suivants dans la base de connaissances Microsoft :
    136128  (http://support.microsoft.com/kb/136128/EN-US/ ) ACC : Introduction aux fichiers .ldb (95/97)
    109957  (http://support.microsoft.com/kb/109957/EN-US/ ) ACC : Introduction aux fichiers .ldb (1.x, 2.0)
  4. Exécutez l'utilitaire de compactage comme suit :

    1. Si une base de données est ouverte, fermez-la.
    2. Pointez sur Utilitaires de base de données dans le menu Outils, puis cliquez sur Compacter la base de données.

      Dans Microsoft Access 2.0 ou version antérieure, dans le menu fichier, cliquez sur Compacter la base de données.

    À ce stade, vérifiez votre base de données pour voir si le dommage a été réparé. Si ce n'est pas le cas, passez aux étapes restantes.
  5. Si l'erreur se trouve dans une table, une requête ou un index, exécutez l'utilitaire de réparation comme suit :

    1. Si une base de données est ouverte, fermez-la.
    2. Pointez sur Utilitaires de base de données dans le menu Outils, puis cliquez sur réparation de base de données.

      Dans Microsoft Access 2.0 ou version antérieure, dans le menu fichier, cliquez sur Réparer base de données.
    3. Sélectionnez le fichier endommagé dans la boîte de dialogue Base de données, puis cliquez sur Réparer.
    Dans Microsoft Access 2.0 ou version antérieure, entrez le nom du fichier endommagé dans la zone Nom de fichier, puis cliquez sur OK.

    Si la réparation réussit, le message suivant s'affiche :

    Dans Microsoft Access pour Windows 95 :
    <path>Microsoft Access réparé la base de données '<chemin>< nom de la base de données >'.

    Dans Microsoft Access 2.0 ou version antérieure :
    <path>Réparation de base de données '< nom de la base de données > <chemin>' s'est terminée correctement.

    Si la réparation échoue, vous recevrez un message indiquant l'opération. Cela signifie que les dommages causés à une table, une requête ou un index sont donc important qu'il ne peut pas être corrigé ou l'erreur se trouve dans un objet qui l'utilitaire ne peuvent pas affecter de réparation.
  6. Si l'erreur se trouve dans une table et les étapes précédentes n'ont pas permis de la récupérer, essayez ce qui suit :

    1. Dans Microsoft Access, exportez la table dans un ASCII fichier (texte délimité). Pour plus d'informations, recherchez l'expression "texte délimité" et puis afficher le «exportation d'Access données "rubrique à l'aide de l'index de l'aide Microsoft Access.
    2. Supprimer toutes les relations associées à cette table, puis supprimez la table à partir de la base de données.
    3. Compacter la base de données.
    4. Recréez la table et toutes les relations qu'elle avait.
    5. À l'aide d'un traitement de texte, recherchez des données corrompues ou inhabituelles dans le fichier ASCII et supprimez ces enregistrements. Enregistrez le fichier dans un format de fichier texte ASCII
    6. Réimporter le fichier ASCII dans la table que vous venez de recréer. Pour plus d'informations, recherchez l'expression "texte délimité" et puis affichez la rubrique "importation ou liaison" à l'aide de l'index de l'aide de Microsoft Access.
    7. Recréer les enregistrements que vous avez dû supprimer.
  7. Si les étapes précédentes n'ont pas permis de restaurer votre 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 le nouveau. Puis recréez les relations. Cette technique résout les problèmes avec les tables système endommagé dans la base de données.
  8. Si l'erreur se trouve dans un formulaire ou un état, elle peut se trouver dans le formulaire ou état lui-même ou dans un ou plusieurs contrôles sur le formulaire ou l'état. Vous pouvez supprimer le formulaire ou l'état et importer à partir de la copie de sauvegarde de votre base de données ou utilisez une des options suivantes :

    1. Si l'erreur se trouve dans le formulaire ou état lui-même, créez un nouveau formulaire ou un état, puis copiez les contrôles à partir du formulaire ou de l'état d'origine.
    2. Si l'erreur se trouve dans un contrôle sur le formulaire ou l'état, créez un nouveau formulaire ou un état et puis recréez les contrôles sur le nouveau formulaire ou l'état. Il est préférable de recréer tous les contrôles, car il n'existe aucun moyen de déterminer quels contrôles sont endommagés.
  9. Si l'erreur se trouve dans une macro ou un module, elle peut se trouver dans la macro ou du module lui-même ou dans le contenu de la macro ou du module. Vous pouvez supprimer la macro ou du module et importer à partir de la copie de sauvegarde de votre base de données ou utilisez une des options suivantes :

    1. Si l'erreur se trouve dans la macro ou du module lui-même, créez une nouvelle macro ou un module, puis copiez le contenu de la macro ou du module d'origine.
    2. L'erreur peut impliquer des caractères non-ASCII incorporés dans le module. Enregistrez le module en tant que fichier texte, supprimez les données incorrectes ou inhabituelles et puis rechargez le fichier texte dans un nouveau module.
    3. Si l'erreur se trouve dans le contenu de la macro ou du module, vous devez créer une nouvelle macro ou un module et puis recréer le contenu de la macro ou du module d'origine.
Remarque : Si vous disposez de Microsoft Access 95, envisagez de télécharger l'utilitaire JetComp.exe. JETCOMP.exe peut dans certains cas réparer les bases de données qui seraient autrement irrécupérables. Pour plus d'informations sur les logiciels nécessaires à l'exécution de jetcomp.exe et également comment l'obtenir, consultez l'article suivant dans la base de connaissances Microsoft :
172733  (http://support.microsoft.com/kb/172733/EN-US/ ) Version mise à jour de Microsoft Jet 3.5 disponible au téléchargement
Si vous ne pouvez pas réparer la base de données avec ces étapes, la base de données est sans doute irréparable. Si c'est le cas, vous devez restaurer votre dernière sauvegarde de base de données ou recréer la base de données.

Comme alternative finale, des consultants qui proposent un service de réparation de base de données Microsoft Access. Car il s'agit d'un service très spécialisé, le moyen le plus efficace pour localiser un consultant est d'envoyer un message dans le groupe de discussion Internet "Groupes d'utilisateurs et de tiers" de Microsoft Access à l'adresse suivante :
Microsoft.public.Access.3rdpartyusrgrp
Pour plus d'informations sur les groupes de discussion Microsoft Access Internet, consultez l'article suivant dans la base de connaissances Microsoft :
150057  (http://support.microsoft.com/kb/150057/EN-US/ ) ACC : Newsgroups de Microsoft Access disponibles sur Internet

Causes typiques du fichier mdb de corruption de la

Il existe trois causes principales d'endommagement de fichiers de mdb Access/Jet :

Base de données est suspect/endommagé en raison d'interruption des opérations de Write

Arrêt correct vers le bas, en cliquant sur Quitter ou sur Fermer dans le menu fichier, est fortement recommandé. Toutefois, 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 si l'ordinateur est éteint manuellement sans premier arrêt de Windows ou si l'alimentation est perdue. Autres situations peut ne pas s'éteindre Access mais peuvent toujours interférer avec de Jet écriture de données sur le disque alors que la base de données est ouverte. Cela peut se produire, par exemple lorsque les réseaux rencontrer ou de défaillance de disques durs de collisions de données. En cas d'interruptions de ces type, Jet peut marquer la base de données comme potentiellement endommagée.

Lorsque Jet commence une opération d'écriture, il définit un indicateur et réinitialise l'indicateur lorsque l'opération est 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, les données dans la base de données ne sont pas réellement endommagées, mais l'indicateur défini prévient Jet qui corruption s'est peut-être produite. Dans le cas, le compactage et/ou la réparation de la base de données peut généralement de restaurer la base de données. Heureusement, il existe des moyens de déterminer quel utilisateur et station de travail a été chargée pour le marquage du fichier comme suspect. Consultez les méthodes pour déterminer quels utilisateurs et/ou stations de travail sont à l'origine Jet marquer le fichier comme suspect plus loin dans cet article.

Matériel réseau défectueux

Dans ce cas, la corruption de fichier ne concerne pas le moteur Jet ; plutôt le fichier est littéralement endommagé par une cause extérieure. La cause peut être une ou plusieurs liens dans la chaîne de matériel entre l'ordinateur résidant sur la base de données et l'ordinateur sur lequel la base de données ouvrent. Cette liste inclut, mais n'est pas limitée aux cartes d'interface réseau, le câblage réseau, les routeurs et les concentrateurs.

Corruption matérielle est généralement signalée par les fichiers mdb qu'il ne peut pas être restaurés par le biais de compactage et de réparation ou de Jetcomp. Corruption matérielle se reproduira généralement jusqu'à ce que le matériel concerné soit réparé ou remplacé.

Ouverture et enregistrement du fichier .mdb dans un autre programme

Il n'y a aucun moyen de récupérer un fichier .mdb qui a été ouvert, puis enregistré dans un autre programme. Par exemple, Microsoft Word vous permettra d'ouvrir une base de données Access et puis enregistrez-le (par la façon dont il ne sert pas quelque si vous ouvrez un fichier .mdb dans une autre application dans la mesure où tous vous consultez sont les caractères étendus). L'enregistrement de cette manière entraîne le fichier mdb vous demandera un mot de passe de base de données lorsque vous tentez d'ouvrir dans Access--même si le fichier n'a jamais été protégé par mot de passe dans Access. L'invite de mot de passe se produit dans ce cas étant la première plage d'octets Qu'access vérifie lors de l'ouverture d'un fichier où le mot de passe de la base de données serait. Si cet octet contient des données endommagées, Access traite le fichier comme étant protégé par mot de passe. Même s'il existait un moyen de contourner l'invite de mot de passe dans ce cas, la base de données serait toujours irrécupérable car la structure binaire est brouillée et par conséquent illisible pour Access. Récupération d'une copie de sauvegarde du fichier est la seule solution dans ce cas. Pour plus d'informations sur ce problème, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
223043  (http://support.microsoft.com/kb/223043/EN-US/ ) ACC : Le mot de passe de la base de données s'affiche même si il n'A jamais définir

Étapes qui peuvent être prises pour éviter la corruption

  • Éviter de perdre l'alimentation au cours de l'écriture de la base de données. Perte de puissance peut provoquer la base de données comme suspecte.
  • Éviter la suppression de connexions réseau.
  • Éviter un arrêt anormal de connexions de Microsoft Jet dues à des coupures de courant, aux arrêts manuels, à l'arrêt du Gestionnaire des tâches de l'application, etc..
  • Lors de la programmation, fermez tous les objets DAO et ADO que vous avez ouverts. Exemples d'objets Recordset, objet QueryDef, TableDef et de la base de données.
  • Erreurs système fatales provoquent presque toujours un arrêt anormal. Si votre base de données est sujette à des erreurs irrécupérables, vous devez résoudre les erreurs avant de la base de données soit trop endommagée pour ouvrir ou à récupérer. Pour plus d'informations sur les utilitaires de Jet de Microsoft, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
    148424  (http://support.microsoft.com/kb/148424/EN-US/ ) ACC : Dépannage des erreurs système fatales dans Microsoft Access 95 et 97
  • Compactez souvent la base de données.
  • N'exécutez pas IPX sur un serveur NT bases de données Jet se trouvent sur le réseau et que le client est Windows 95 avec IPX/SPX. Au lieu de cela, exécutez TCP-IP sur le serveur NT et une pile à double protocole IPX et TCP/IP sur le client Windows 95. (NT pour NT avec IPX/SPX ne pas provoquer le problème, ni va Novell sur n'importe quel client.)
  • Éviter un grand nombre d'Ouvrir/fermer opérations dans une boucle (40 000 open/close opérations successives à plus de 1 000 000.

Références

Pour plus d'informations sur la réparation des bases de données, cliquez sur Sommaire et index dans le menu aide, cliquez sur l'onglet Index dans l'aide d'Access, tapez le texte suivant :

réparation

puis double-cliquez sur le texte sélectionné pour atteindre le sujet de réparer une base de données endommagée.

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Access 1.1 Standard
  • Microsoft Access 2.0 Standard
  • Microsoft Access 95 Standard
  • Microsoft Access 95 Standard
Mots-clés : 
kbmt kbhowto kbusage KB109953 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 109953  (http://support.microsoft.com/kb/109953/en-us/ )
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.
Retired KB ArticleExclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.