Comment réparer une base de données SQL Server en mode récupération ?
Résumé: ce blog traite des causes courantes du problème "Base de données SQL Server bloquée en mode de récupération". Il décrit également comment dépanner et résoudre ce problème. Si le processus de récupération ne parvient pas à mettre la base de données en ligne, essayez d'utiliser un outil de récupération SQL pour retrouver l'accès à la base de données, sans temps d'arrêt prolongé.
Lors du redémarrage du serveur SQL ou des services après l’arrêt de la base de données SQL, le crash du serveur ou la corruption de la base de données, la base de données passe automatiquement à l’état de “récupération”. La base de données est mise en ligne une fois le processus de récupération terminé. Toutefois, si la récupération de la base de données prend trop de temps, il est important de savoir pourquoi la base de données est bloquée dans la récupération.
Quelle est la cause du blocage de la base de données SQL Server en mode de récupération ?
Vous pouvez consulter le journal des erreurs de SQL Server pour connaître la cause du problème de base de données bloquée en mode RECOVERY. Les causes courantes de ce problème sont les suivantes
- Il se peut que vous restauriez la base de données à partir de sauvegardes complètes, différentielles et de journaux avec l’option NORECOVERY activée, mais que RECOVERY ne soit pas spécifié lors de la dernière restauration.
- Selon MSDN, le journal des transactions peut se remplir lorsqu’une base de données est en cours de récupération. SQL Server arrête toutes les transactions en cours jusqu’à ce que l’espace de stockage du journal soit libéré, ce qui ralentit la récupération de la base de données. Plusieurs fichiers journaux virtuels (VLF) dans un journal des transactions peuvent également ralentir le processus de récupération.
- Le processus de récupération peut s’arrêter si votre base de données est endommagée ou si elle est corrompue.
Résolution du problème ‘Base de données SQL Server en mode de récupération’.
Voici quelques conseils de dépannage simples pour résoudre le problème de la base de données SQL Server en mode de récupération :
Conseil 1 – Restaurer la base de données avec RECOVERY
Remarque : L’exécution de l’option “RESTORE avec récupération” oblige la base de données à repasser par les mêmes étapes de récupération. Évitez cette option si votre base de données est volumineuse.
Exécutez la requête suivante pour remettre votre base de données en ligne :
RESTORE DATABASE db_name WITH RECOVERY ; |
La requête annule toutes les transactions non validées et sort la base de données du mode de récupération.
Conseil 2 – Appliquer les correctifs de Microsoft
Si vous avez trop de VLF dans le journal des transactions, ce qui ralentit la récupération de la base de données, l’application des correctifs de Microsoft peut vous aider.
Conseil 3 – Exécuter DBCC CHECKDB pour déterminer la corruption de la base de données
Exécutez DBCC CHECKDB sur la base de données problématique. S’il signale des erreurs de cohérence, vous devez réparer la base de données à l’aide de l’option de niveau de réparation minimal. Pour plus d’informations, lisez ceci : Lire la suite
Si ces conseils de dépannage échouent, essayez de résoudre le problème à l’aide des solutions présentées dans la section suivante.
Solutions pour résoudre le problème de la base de données SQL Server en mode de récupération
Voici les deux solutions que vous pouvez utiliser pour résoudre ce problème :
Solution 1 – Restaurer la base de données à partir de la sauvegarde la plus récente
Note : Passez à la solution suivante si la sauvegarde est obsolète ou corrompue.
Si le processus de récupération de la base de données semble bloqué depuis longtemps, essayez de restaurer la base de données à partir d’une copie de sauvegarde mise à jour. Pour ce faire, procédez comme suit :
- Ouvrez SQL Server Management Studio (SSMS), cliquez avec le bouton droit de la souris sur Bases de données et cliquez sur Restaurer la base de données.
- Dans la section Source, sélectionnez l’option Périphérique et cliquez sur le bouton situé à côté.
- Dans la boîte de dialogue qui s’ouvre, appuyez sur Ajouter.
- Localisez et sélectionnez le fichier de sauvegarde (.bak) que vous souhaitez restaurer, puis appuyez sur OK.
- Cliquez à nouveau sur OK.
- Dans l’écran Restaurer la base de données, saisissez le nom de la base de données que vous souhaitez restaurer et cliquez sur OK.
- La base de données sera restaurée.
Remarque : la restauration d’une base de données volumineuse contenant plusieurs tables peut prendre beaucoup de temps.
Solution 2 – Utiliser un outil professionnel de récupération des bases de données SQL
Si aucune sauvegarde n’est disponible ou si vous souhaitez restaurer rapidement la base de données, l’utilisation d’un outil de récupération SQL, tel que Stellar Repair for MS SQL, peut s’avérer utile. Le logiciel répare les fichiers .mdf/.ndf et restaure la base de données dans sa forme d’origine.
Regardez cette vidéo pour comprendre le fonctionnement du logiciel :
Conclusion
Cet article traite de la base de données SQL qui est bloquée dans l’état ‘Recovering’. Il décrit également les causes courantes du problème de la base de données SQL Server en mode de récupération et les conseils de dépannage pour résoudre le problème. Si ces conseils n’aident pas, la mise en œuvre des solutions peut aider à ramener la base de données à un état cohérent. Un outil de récupération de base de données SQL peut s’avérer utile lorsque tout le reste échoue à restaurer la base de données.