Table des matières

     

    Réparation de la base de données SQL

    Comment résoudre le statut « Récupération des données en attente » dans une base de données SQL Server [2026]


    Table des matières

      Résumé: Pour corriger le problème de statut de récupération des données en attente dans SQL Server, vous devez d'abord en identifier la cause. En fonction de la cause, vous pouvez reconstruire les fichiers journaux, utiliser la commande ALTER DATABASE pour corriger les problèmes de disque dur, remettre la base de données à partir d'une sauvegarde ou réparer la base de données endommagée avec DBCC CHECKDB ou un outil de réparation de base de données SQL. Dans cet article, nous expliquerons en détail ces solutions pour corriger le statut de récupération des données en attente dans la base de données SQL Server.

      Qu’est-ce que le statut « Récupération des données en attente » dans une base de données SQL Server ?

      « Récupération des données en attente » est un statut dans lequel SQL Server ne peut pas remettre la base de données en raison d’une corruption du fichier MDF/LDF ou d’un espace de stockage insuffisant. Lorsque vous vous connectez à l’instance du serveur après un crash, un redémarrage ou une réinitialisation soudaine du système, vous pouvez constater que le statut de la base de données est passé à « Récupération des données en attente ». Ce statut signifie que la récupération des données n’a pas échoué, mais qu’elle est bloquée et indisponible pour les utilisateurs.

      La base de données passe au statut « Récupération des données en attente » lorsque quelque chose empêche MS SQL Server de lancer la récupération des données. Cela peut se produire en raison de problèmes liés aux ressources, de fichiers manquants ou de problèmes avec la base de données.

      Prenons l’exemple d’une demande utilisateur :

      Après le redémarrage, certaines de mes bases de données SQL Server sur des serveurs exécutant 2012R2/2016 et SQL Server 2014 SP3CU2/SP3CU3 passent aléatoirement à l’état « Récupération des données en attente ». L’Observateur d’événements n’affiche aucune erreur et il existe des exceptions Carbon Black Defence pour les fichiers .mdf et .ldf. Un script T-SQL corrige temporairement le problème, mais comme sa récurrence est imprévisible, il est recommandé d’examiner les journaux MS SQL pour obtenir des éclaircissements.

      Quelles sont les raisons du statut « Récupération des données en attente » dans SQL Server ?

      Une base de données SQL Server peut passer à l’état « Récupération des données en attente » pour l’une ou plusieurs des raisons suivantes :

      • La base de données n’a pas été correctement fermée.
      • Les fichiers journaux des transactions sont manquants ou endommagés.
      • Le disque dur/disque sur lequel la base de données est stockée ne dispose pas d’un espace de stockage suffisant.
      • Le fichier de base de données est corrompu.
      • Le système a été arrêté de manière anormale ou a subi une panne.
      • Erreurs dans MS SQL Server.

      Comment vérifier l’état « Récupération des données en attente » dans SQL Server ?

      Vous pouvez vérifier manuellement le statut « Récupération des données en attente » dans SQL Server Management Studio (SSMS). Lorsque vous démarrez le programme, vous verrez sous « Explorateur d’objets » que la base de données problématique affiche le statut « Récupération des données en attente » au lieu de « UTILISATEUR UNIQUE », « EN LIGNE » ou un autre statut.

      EN LIGNE

      Il est relativement facile de vérifier manuellement le statut d’une seule base de données dans SSMS. Cependant, dans un environnement de production où plusieurs bases de données SQL doivent être gérées, il est fastidieux d’ouvrir manuellement SSMS et de cliquer sur chaque base de données.

      Dans les cas où l’interface graphique n’affiche aucun message d’attention, une surveillance continue de l’état de la base de données est souvent nécessaire, que celle-ci soit en mode suspect ou en mode de récupération. Dans de tels cas, vous pouvez exécuter la requête suivante :

      SELECT name, state_desc FROM sys.databases WHERE state_desc = 'RECOVERY_PENDING'; 
      databases

      Quelles sont les méthodes disponibles pour résoudre le problème de « récupération des données en attente » dans la base de données SQL Server ?

      Tout d’abord, vous pouvez vérifier le journal des erreurs SQL Server : Cela vous permettra d’identifier les problèmes pouvant être à l’origine du statut « Récupération des données en attente » de la base de données. Pour vérifier les journaux d’erreurs, ouvrez SSMS, développez SQL Server Agent et cliquez sur « Journaux d’erreurs ». Si des problèmes avec le journal des transactions déclenchent un changement dans le statut de la base de données, cela s’affichera dans les journaux d’erreurs.

      changement dans le statut de la base de données

      Si un fichier MDF inaccessible, corrompu ou défectueux est à l’origine du problème « Récupération des données en attente », un message d’erreur s’affichera (voir l’image ci-dessous).

      Récupération des données en attente

      Si vous n’avez détecté aucun problème, veuillez suivre les méthodes de dépannage ci-dessous pour livrer la base de données SQL en mode normal.

      1.        Désactivez l’option « AUTO CLOSE/ FERMETURE AUTOMATIQUE»

      Parfois, la base de données passe à l’état « Récupération des données en attente » lorsque l’option « AUTO CLOSE/ FERMETURE AUTOMATIQUE » est activée pour la base de données. Lorsque cette option est activée, SQL Server ferme et rouvre la base de données à plusieurs reprises. Par conséquent, si elle est ouverte et fermée fréquemment après chaque connexion, il est recommandé de désactiver l’option « AUTO CLOSE/ FERMETURE AUTOMATIQUE ». Pour ce faire, procédez comme suit

      • Ouvrez SQL Server Management Studio (SSMS) et connectez-vous à l’instance SQL Server.
      • Cliquez avec le bouton droit sur la base de données et sélectionnez « Propriétés ».
      • Dans la fenêtre Propriétés de la base de données, cliquez sur Options dans le volet gauche.
      Options
      • Sous « Automatique », définissez la valeur « AUTO CLOSE » sur « FALSE » et cliquez sur « OK » pour enregistrer les modifications.
      Automatique

      1.        Utilisez la commande « ALTER DATABASE »

      Si le statut « SQL Database Server Data Recovery Pending » (Récupération des données du serveur de base de données SQL en attente) est dû à un problème temporaire avec le disque dur du système, vous pouvez exécuter la commande suivante pour le livrer :

      ALTER DATABASE company SET ONLINE ; 

      Si la récupération des données ne peut pas se poursuivre en raison de problèmes de performances du sous-système d’E/S, tels que la latence du disque dur ou des problèmes matériels, veuillez vous reporter à ce document Microsoft : .

      2.      Recréez les fichiers journaux

      La base de données SQL peut entrer dans un état « en attente de récupération » si les fichiers journaux des transactions sont manquants ou corrompus. Vous pouvez recréer les fichiers journaux en déconnectant et en reconnectant la base de données principale. Lorsque vous déconnectez la base de données (la mettez hors ligne), puis la reconnectez (la reconnectez), les fichiers journaux sont automatiquement recréés. Pour déconnecter la base de données SQL :  

      Remarque : vous ne pouvez pas détacher la base de données si elle est publiée, répliquée, en mode suspect ou dans une session de mise en miroir.

      • Veuillez ouvrir SQL Server Management Studio (SSMS) et cliquer sur l’option « Nouvelle requête ».
      • Veuillez mettre la base de données en mode d’urgence à l’aide de la commande suivante :
      ALTER DATABASE [DBName] SET Emergency;
      • Veuillez ensuite mettre la base de données en mode multi-utilisateurs à l’aide de la commande suivante :
      ALTER DATABASE [NomBaseDeDonnées] set 
      • Exécutez maintenant la commande suivante pour détacher la base de données :
      EXEC sp_detach_db‘[NomDeLaBaseDeDonnées]

      Une fois la base de données détachée, exécutez la commande suivante pour rattacher la base de données SQL :

      EXEC sp_attach_single_file_db @DBName = '[DBName]', @physname = N'[mdf path]

      Vous pouvez également attacher une base de données SQL sans fichier journal des transactions en suivant ces étapes :

      • Ouvrez SSMS. Dans l’Explorateur d’objets, connectez-vous à l’instance SQL Server, cliquez avec le bouton droit sur « Bases de données », puis cliquez sur « Attacher ».
      Attacher
      • Dans la boîte de dialogue Attacher des bases de données, sélectionnez la base de données que vous souhaitez attacher et cliquez sur Ajouter.
      Ajouter
      • Dans la boîte de dialogue Rechercher les fichiers de base de données, sélectionnez l’emplacement de la base de données et développez la structure du répertoire pour sélectionner le fichier MDF. Cliquez ensuite sur OK.
      Rechercher les fichiers de base de données
      • Si le fichier journal des transactions est manquant, la fenêtre « Attacher des bases de données » affichera le message « Fichier journal introuvable ». Pour attacher la base de données sans le fichier journal des transactions, vous devez sélectionner le fichier journal des transactions que vous voyez dans l’extrait, puis cliquer sur l’option « Supprimer ». Cliquez sur « OK ».
      Supprimer

      La base de données sera alors attachée. Une fois la base de données attachée, SQL Server créera automatiquement un nouveau fichier journal des transactions dans le même répertoire que le fichier MDF. Le statut de la base de données passera de « Récupération des données en attente » à « En ligne ».

      Cependant, cette méthode présente certains inconvénients, y compris :

      • Les transactions non validées sont perdues.
      • Un fichier MDF lisible est requis.
      • Vous devez détacher la base de données, ce qui peut entraîner un temps d’arrêt. Vous pouvez utiliser cette méthode si le temps d’arrêt et la perte de données sont acceptables, en particulier pendant la maintenance réservée.

      Si vous ne souhaitez pas déconnecter la base de données, vous pouvez utiliser les commandes T-SQL suivantes pour recréer le fichier journal des transactions :

      USE master;
      
      GO
      
      ALTER DATABASE [Company]
      
      SET EMERGENCY;
      
      GO
      
      ALTER DATABASE [Company]
      
      SET SINGLE_USER;
      
      GO
      
      ALTER DATABASE [Company] REBUILD LOG ON
      
      (NAME = Company_log,
      
      FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER2022\MSSQL\DATA\Company_log.ldf');
      
      GO
      
      ALTER DATABASE [Company]
      
      SET MULTI_USER;
      
      GO

      4. Réparer la base de données

      SQL Server peut ne pas être en mesure de démarrer la récupération des données si les fichiers de base de données (MDF/NDF) sont corrompus. Vous pouvez vérifier la base de données pour détecter d’éventuelles incohérences ou erreurs à l’adresse en exécutant la commande suivante avec NO_INFOMSGS :

      DBCC CHECKDB(entreprise) avec NO_INFOMSGS ; 

      La commande ci-dessus affiche les erreurs de cohérence (le cas échéant) dans la base de données et recommande des options de réparation. Si des problèmes sont affichés dans la base de données, il est nécessaire de la réparer.

      Si le fichier de sauvegarde est disponible, vous pouvez d’abord essayer de remettre la base de données à partir de la sauvegarde. Si ce n’est pas le cas, vous pouvez réparer la base de données à l’aide de la commande DBCC CHECKDB. Pour ce faire, procédez comme suit :

      Remarque : avant de commencer la réparation, veuillez créer une copie de sauvegarde de la base de données.

      • Mettez la base de données en mode d’urgence à l’aide de la commande suivante :
      ALTER DATABASE [Company] SET EMERGENCY;
      
      GO
      • Exécutez ensuite la commande suivante pour mettre la base de données en mode SINGLE-USER.
      ALTER DATABASE [Entreprise] set single_user
      
      GO
      • Exécutez maintenant la commande DBCC CHECKDB avec l’option « REPAIR_ALLOW_DATA_LOSS » (comme indiqué ci-dessous) pour réparer la base de données.
      DBCC CHECKDB ([Entreprise], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
      
      GO
      • Une fois le processus de réparation terminé, rétablissez le mode multi-utilisateurs de la base de données en exécutant la commande suivante :
      ALTER DATABASE [Entreprise] set multi_user
      
      GO

      Limitations lors de l’utilisation de la commande DBCC CHECKDB :

      • Elle peut supprimer des pages ou des transactions corrompues dans la base de données SQL.
      • La récupération des données peut échouer dans les cas de corruption grave.
      • Pendant l’exécution de cette commande, il est nécessaire d’empêcher les autres utilisateurs d’apporter des modifications à la base de données jusqu’à ce que la commande soit terminée.
      • Il n’est pas possible de remettre des bases de données contenant des index non clusterisés.

      Une solution alternative pour réparer la base de données SQL

      Pour contourner les limitations de la commande DBCC CHECKDB et réparer rapidement la base de données endommagée, vous pouvez utiliser un logiciel avancé de réparation de bases de données SQL tel que Stellar Repair for MS SQL. Il s’agit d’un outil spécialisé capable de réparer des bases de données gravement endommagées sans restriction de taille de fichier. Il peut récupérer toutes les données des fichiers MDF/NDF corrompus, y compris les index non clusterisés, avec une intégrité et une précision totales. Il permet de livrer la base de données en ligne à partir du statut « Récupération des données en attente » sans aucune perte de données.

      Étapes à suivre pour utiliser STELLAR Repair for MS SQL afin de récupérer une base de données endommagée à partir du statut « Récupération en attente » :

      • Téléchargez, installez et exécutez le logiciel.
      • Dans la fenêtre « Sélectionner une base de données », cliquez sur « Parcourir » ou « Rechercher » pour sélectionner le fichier de base de données que vous souhaitez réparer.
      Sélectionner une base de données
      • En mode « Sélectionner l’analyse », deux options s’offrent à vous pour analyser la base de données endommagée : « Analyse standard » et « Analyse avancée ». Sélectionnez le mode « Analyse standard ». Si le fichier de base de données est gravement endommagé, cliquez sur « Analyse avancée ». Cliquez sur « OK ».
      Analyse avancée
      • Cliquez sur « OK » dans la boîte de message « Réparation terminée ».
      Réparation terminée
      • L’outil affiche tous les éléments récupérables dans la base de données.
      éléments récupérables
      • Pour enregistrer le fichier réparé et ses composants, cliquez sur « Enregistrer » dans le menu « Fichier ».
      Enregistrer
      • Dans la fenêtre « Enregistrer la base de données », vous pouvez sélectionner « Nouvelle base de données », « Base de données active » ou d’autres formats. Cliquez sur « Suivant ».
      • Dans la fenêtre « Enregistrer la base de données », saisissez les informations requises dans la section « Se connecter au serveur » et cliquez sur « Suivant ».
      • Sélectionnez le mode de stockage, puis cliquez sur « Enregistrer ».
      Enregistrer
      • Une fois la base de données réparée, ouvrez SSMS et accédez à « recovered_company » sous « Explorateur d’objets ».
      recovered_company

      Veuillez visionner cette vidéo pour découvrir comment utiliser STELLAR Repair for MS SQL afin de récupérer une base de données SQL Server bloquée dans l’état « Récupération des données en attente ».

      Conclusion

      Une base de données SQL peut être mise en attente de récupération des données pour diverses raisons. Dans cet article, nous avons expliqué comment résoudre le statut « Récupération des données en attente » et livrer la base de données en ligne. Si le statut « Récupération des données en attente » de la base de données est dû à une corruption, vous pouvez réparer la base de données à l’aide du logiciel Stellar Repair for MS SQL. Cela vous permet de réparer le fichier de base de données (MDF/NDF) et de remettre tous les objets avec une intégrité totale. Cela vous permet également de corriger plusieurs erreurs liées à la corruption dans la base de données SQL.

      « Récupération des données en attente », « Suspect » et « Hors ligne » sont trois états différents d'une base de données SQL dans lesquels les utilisateurs ne peuvent pas accéder à la base de données. Cependant, la principale différence réside dans la cause du problème qui conduit à un tel état. Voici en quoi ces états de base de données SQL diffèrent les uns des autres : • Dans le statut « Récupération des données en attente », le serveur ne peut pas démarrer la récupération des données en raison d'une erreur liée aux ressources. • En mode « Suspect », le processus de récupération des données a été lancé, mais n'a pas pu être mené à bien en raison d'une corruption du groupe de fichiers principal ou des fichiers journaux de transactions. • En mode hors ligne, la base de données SQL est facile à manquer ou inaccessible aux connexions des utilisateurs en raison d'une action explicite de l'utilisateur. Une action de l'utilisateur est nécessaire pour livrer la base de données en ligne.
      Voici quelques vérifications à effectuer lorsque votre base de données est dans l'état « Récupération des données en attente » : • Vérifiez le journal des erreurs SQL Server pour déterminer pourquoi la base de données est dans l'état « Récupération des données en attente ». • Vérifiez que les fichiers de base de données ou les fichiers de sauvegarde sont lisibles et accessibles aux emplacements spécifiés. • Vérifiez les autorisations pour les fichiers de base de données.
      Dans SQL Server, l'option AUTO_CLOSE est un paramètre au niveau de la base de données qui ferme automatiquement la base de données et libère ses ressources lorsque le dernier utilisateur se déconnecte. Si la valeur de l'option AUTO_CLOSE est définie sur « true/ON », cela peut entraîner l'état « Récupération des données en attente ». Il est donc recommandé de définir cette option sur « OFF/False ».
      Vous pouvez vérifier l'état d'une base de données SQL qui est dans l'état « Récupération des données en attente » à l'aide de la commande T-SQL suivante : SELECT name, state_desc FROM sys.databases;
      Non, les données ne sont pas perdues simplement parce que la base de données est dans l'état « Récupération des données en attente ». Cet état signifie que SQL Server ne peut pas démarrer la récupération des données en raison d'un problème. Les données dans la base de données sont toujours présentes. Pour accéder aux données, il est nécessaire de faire passer la base de données de l'état « Récupération des données en attente » à l'état en ligne.
      Vous pouvez éviter l'état « Récupération des données en attente » à l'avenir en suivant ces procédures : • Sauvegardez régulièrement la base de données. • Vérifiez l'intégrité de la sauvegarde avant de remettre la base de données. • Si vous accédez à la base de données dans un groupe de disponibilité Always On, n'oubliez pas d'effectuer régulièrement des contrôles d'intégrité. • Vérifiez l'espace de stockage et l'état du système de fichiers. • Vérifiez régulièrement les journaux d'erreurs SQL Server pour détecter les avertissements d'attention. • Assurez-vous de disposer d'un onduleur pour éviter les coupures de courant soudaines.
      Pour résoudre un statut « Récupération des données en attente » dans un groupe de disponibilité Always On, supprimez d'abord la réplique affectée si elle est la seule dans le groupe de disponibilité. Réattribuez l'écouteur pour maintenir la connectivité. Si la base de données est marquée comme « Récupération des données en attente », vérifiez s'il existe des problèmes de ressources et de corruption. Si le fichier de base de données est corrompu, utilisez STELLAR Repair for MS SQL pour réparer la base de données. Après la récupération des données, ajoutez à nouveau la base de données au groupe de disponibilité et vérifiez la synchronisation entre les répliques.
      La base de données passe généralement au statut « Récupération des données en attente » en raison d'une corruption. Il existe de nombreux outils professionnels de réparation de bases de données SQL, tels que STELLAR Repair for MS SQL, qui peuvent aider à récupérer la base de données lorsqu'elle passe au statut « Récupération des données en attente » en raison d'une corruption.

      A propos de l'auteur

      Neha Sawhney

      Neha est une spécialiste du marketing digital, spécialisée dans la langue française et ayant d'excellentes capacités rédactionnelles. Sa maîtrise de la langue française et sa connaissance approfondie de la technologie de récupération des données lui permettent de générer un contenu de qualité pour les régions francophones.

      Google Trust
      Article similaire

      POURQUOI STELLAR® EST LE LEADER MONDIAL

      Pourquoi choisir Stellar?

      • 0M+

        Clients

      • 0+

        Années d'excellence

      • 0+

        Ingénieurs R&D

      • 0+

        Pays

      • 0+

        Témoignages

      • 0+

        Récompenses reçues

      BitRaser With 30 Years of Excellence
      TECHNOLOGIE À LAQUELLE VOUS
      POUVEZ FAIRE CONFIANCE
      Experts en soins des données depuis 1993
      ×