Comment corriger une page corrompue dans SQL Server ?
Résumé: dans ce billet, nous allons parler de la cause profonde de la corruption au niveau de la page dans le serveur SQL. Nous discuterons également des moyens de réparer la corruption et de restaurer la base de données. De plus, vous découvrirez un logiciel de réparation de base de données SQL qui peut facilement réparer une base de données corrompue et restaurer tous ses objets.
La page est l’unité de stockage principale du serveur SQL. Toutes les informations contenues dans les fichiers de base de données SQL Server (MDF/NDF) sont stockées dans des pages de 8 Ko de taille. Chaque page commence par un en-tête de 96 octets qui contient des informations telles que le numéro de page, le type de page, l’espace libre, etc. Si une page est corrompue, cela peut affecter l’ensemble de la base de données. Si une page est corrompue, cela peut affecter l’ensemble de la base de données. Dans ce cas, vous recevrez divers messages d’erreur lors de l’ouverture du fichier de la base de données, voire vous ne pourrez plus accéder à la base de données. Il est donc important de corriger immédiatement les dommages au niveau de la page. Dans cet article, vous apprendrez comment réparer une page endommagée dans une base de données SQL Server.
Comment reconnaître une corruption dans la base de données du serveur SQL ?
Avant de trouver des solutions pour remédier à la corruption, vous devez vérifier que la base de données SQL n’est pas corrompue. Il existe plusieurs façons de vérifier la présence d’une corruption au niveau des pages dans une base de données SQL Server. Certaines d’entre elles sont expliquées ci-dessous :
n°1. Exécutez l’instruction SELECT.
SQL Server conserve un journal de toutes les pages suspectes dans la table suspect_pages de la base de données msdb (système), qui contient toutes les pages corrompues signalées par les requêtes SQL. Vous pouvez consulter la table suspect_pages pour voir les pages corrompues dans la base de données. Pour ce faire, vous pouvez exécuter l’instruction SELECT comme suit :
SELECT * FROM msdb..
La commande ci-dessus renvoie une grille comportant une ligne pour chaque page endommagée. Dans notre cas (voir l’image ci-dessus), vous pouvez voir que la page avec l’ID 368 est endommagée.
2. exécutez la commande DBCC CHECKDB
La commande DBCC CHECKDB vérifie l’intégrité physique et logique des objets de la base de données et des relations d’index. Vous pouvez utiliser la commande DBCC CHECKDB comme indiqué ci-dessous pour vérifier que la base de données SQL n’est pas corrompue.
DBCC CHECKDB 'nom_de_la_banque_de_données';
Si la commande ci-dessus détecte une corruption de la base de données, elle affichera les erreurs de cohérence ainsi que les options possibles pour réparer la base de données.
3. utilisez l’option CHECKSUM
Vous pouvez également utiliser l’option CHECKSUM pour détecter la corruption au niveau des pages dans les bases de données SQL lorsque l’option PAGE_VERIFY est définie sur CHECKSUM. CHECKSUM est une option de base de données qui définit le processus dans SQL Server qui vérifie la cohérence des pages lorsqu’elles sont écrites et lues sur le disque dur. Pour vérifier si la base de données SQL est corrompue au niveau de la page, exécutez la commande suivante :
SELECT name, page_verify_option_desc FROM sys.
4. exécutez la commande DBCC PAGE
La commande DBCC PAGE est une commande non documentée qui est utilisée pour reconnaître les pages endommagées dans une base de données. Pour obtenir le résultat de la commande DBCC PAGE, vous devez activer le drapeau de trace 3604. Voici la commande :
DBCC TRACEON (3604)
DBCC PAGE('Recovery_test',1,368,2) WITH
La sortie de la commande vous permet de reconnaître le type de dommage survenu et le type de données affectées.
Solutions pour résoudre les problèmes de corruption de pages dans les bases de données SQL Server
Si vous trouvez des erreurs de niveau de page ou une corruption dans la base de données SQL après avoir vérifié la base de données à l’aide de l’une des méthodes ci-dessus, suivez les méthodes énumérées ci-dessous pour réparer la base de données et remettre les données en état.
n°1 – Remettre le niveau de la page
Vous pouvez effectuer une “restauration de page” pour ne restaurer que les pages endommagées sans remettre la base de données entière. Il s’agit d’une méthode plus rapide si vous ne devez remettre que quelques pages individuelles. La restauration de page s’applique aux bases de données qui utilisent le système de récupération complète des données ou le système de récupération en bloc des journaux. Vous pouvez remettre des pages à l’aide de SQL Server Management Studio ou de commandes T-SQL. Pour remettre des pages en état avec SSMS, procédez comme suit :
- Ouvrez SSMS et établissez une connexion avec votre instance de serveur SQL.
- Développez le nœud Bases de données dans l’Explorateur d’objets, cliquez avec le bouton droit de la souris sur la base de données concernée et sélectionnez Tâches > Restaurer > Page. La fenêtre Page de restauration s’ouvre.
- Dans la fenêtre de la page Restaurer, vérifiez la base de données sélectionnée, le fichier de sauvegarde, le jeu de sauvegarde et les autres détails requis.
- Pour identifier les pages endommagées, cliquez sur Vérifier les pages de la base de données. Cette opération peut prendre un certain temps.
- Lorsque le processus est terminé, la grille des pages s’affiche. Vous pouvez y identifier les pages qui doivent être remises en état.
- Utilisez les boutons Ajouter et Supprimer pour ajouter ou supprimer les pages.
- Cliquez ensuite sur OK pour remettre les pages répertoriées dans le tableau des pages.
Vous pouvez également utiliser la commande T-SQL – RESTORE DATABASE (voir l’exemple suivant) pour remettre en place la page
Remarque : vous devez connaître l’ID du fichier où se trouve la page et l’ID de la page endommagée.
RESTORE DATABASE <nom_de_la_base_de_données>
PAGE = '<Fichier : Page> [ ,... n ] ' [ ,... n ]
FROM <backup_device> [ ,... n ]
AVEC
Limites de la méthode ci-dessus :
- La restauration de plusieurs pages à l’aide de la fonction de restauration de page est un processus qui prend du temps.
- Il ne peut remettre que les pages de la base de données. Le journal des transactions, les pages d’affectation, la page 0 de tous les fichiers de données (la page de démarrage du fichier), la page 1:9 (la page de démarrage de la base de données) et le catalogue en texte intégral ne sont pas remis.
- Il ne soutient que les bases de données qui utilisent le modèle de récupération complète des données ou de récupération des données avec enregistrement en bloc.
2 – Utilisez la commande DBCC CHECKDB
Si plusieurs pages sont endommagées, vous pouvez utiliser la commande DBCC CHECKDB pour réparer la base de données SQL endommagée. Vous pouvez utiliser l’option REPAIR_ALLOW_DATA_LOSS avec cette commande.
Vous devez d’abord configurer la base de données en mode mono-utilisateur en exécutant la commande suivante :
ALTER DATABASE Dbtesting SET
Exécutez ensuite la commande suivante pour réparer la base de données :
DBCC CHECKDB (N 'Dbtesting', REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS;
Code GOCopy
Après avoir réparé la base de données, mettez-la en mode multi-utilisateurs à l’aide de la commande suivante :
ALTER DATABASE Dbtesting SET
Limites de la méthode ci-dessus :
- Lors de la réparation de la base de données, des lignes, des pages ou des séries de pages peuvent être libérées. Cela peut entraîner une certaine perte de données.
- Il se peut que vous deviez exécuter cette commande plusieurs fois pour résoudre les problèmes, ce qui prend du temps.
3 – Utilisez un programme de réparation SQL professionnel
Si les méthodes ci-dessus échouent, vous pouvez utiliser un outil professionnel de réparation de bases de données SQL pour réparer la base de données corrompue. Stellar Repair for MS SQL est l’un de ces outils qui peut réparer la base de données SQL corrompue rapidement et sans perte de données. Il peut réparer et remettre en état tous les objets de la base de données, y compris les tables, les pages, les vues, les clés et les index, avec une précision absolue.
Quelques fonctions importantes de Stellar Repair for MS SQL :
- Soutien des données compressées PAGE.
- Répare les fichiers MDF et NDF.
- Remet en état toutes les données des bases de données SQL endommagées avec une intégrité totale.
- Il soutient la réparation des bases de données SQL sur les systèmes Windows et Linux.
- Il est soutenu par MS SQL Server 2022 et les versions inférieures.
- Il vous permet d’enregistrer le fichier réparé dans plusieurs formats – base de données active, nouvelle base de données, CSV et XLS.
- Aide à rectifier les erreurs complexes liées à la corruption.
À la fin
Il y a plusieurs raisons qui peuvent causer une corruption au niveau de la page dans les bases de données du serveur SQL. Nous avons décrit ci-dessus comment vous pouvez reconnaître une corruption au niveau des pages dans une base de données. Si quelques pages sont corrompues, vous pouvez les remettre en état à l’aide de la méthode de restauration de page. Si plusieurs pages sont corrompues, vous pouvez utiliser la commande DBCC CHECKDB pour réparer la base de données corrompue. Toutefois, ces deux méthodes présentent certaines limites. Vous pouvez également utiliser un outil de réparation SQL professionnel tel que Stellar Repair for MS SQL. Il peut facilement réparer les fichiers de base de données SQL gravement endommagés et remettre toutes les données, y compris les pages, avec une précision absolue.