Summary: Dans cet article, vous apprendrez comment identifier et réparer une corruption critique de la base de données dans SQL Server avec les pages GAM, SGAM et IAM. Découvrez les erreurs courantes, obtenez un aperçu des stratégies de diagnostic, de réparation et de prévention et des solutions telles que la récupération de la base de données ou un logiciel de réparation tiers. Vous recevrez également des conseils sur la façon de prévenir les dommages futurs.
Dans SQL Server, une page est l’unité de base pour le stockage des données et les extents sont l’unité de base qui permet de gérer les pages de manière efficace. Une étendue est une combinaison de huit pages physiquement connectées. Dans SQL Server, il existe deux types de cartes d’allocation qui sont utilisées pour enregistrer l’étendue de l’allocation – Global Allocation MAP (GAM) et Shared Global Allocation MAP (SGAM). Il existe une autre page, la carte d’allocation d’index (IAM), qui enregistre les étendues dans la partie de 4 Go du fichier de base de données SQL Server utilisée par une unité d’allocation. Parfois, ces pages de la base de données SQL sont corrompues pour diverses raisons, ce qui nécessite la réparation de la base de données endommagée. Dans cet article, vous apprendrez comment identifier et réparer la corruption des bases de données SQL – les problèmes de pages GAM, SGAM et IAM dans SQL Server.
Que sont les pages GAM, SGAM et IAM ?
Les pages d’allocation globale (GAM) sont responsables de la gestion des extensions d’allocation au sein de la base de données. Elles permettent d’identifier les extensions libres si nécessaire.
Les pages SGAM (Shared Allocation Map) sont comme des cartes granulaires. Elles gèrent l’attribution d’étendues à des groupes de fichiers spécifiques dans la base de données.
Les pages IAM (Index Allocation Map) sont des pages internes spéciales qui fonctionnent comme un registre pour le stockage des données. Elles indiquent le bureau de la page de données dans le fichier de base de données.
Comment identifier les défauts de page GAM, SGAM et IAM ?
Si vous exécutez des requêtes, vous pouvez recevoir un message d’erreur similaire à celui-ci :
Msg 8905, niveau 16, statut 1, ligne 1
L'étendue (5678:1234) de l'ID de base de données 10 est marquée comme étant affectée dans la GAM, mais aucun SGAM ou IAM ne l'a affectée.
Cette erreur indique que la page GAM est corrompue.
Une autre façon de reconnaître les erreurs dans les pages de la base de données est d’utiliser la commande DBCC CHECKDB (voir l’exemple suivant).
DBCC CHECKDB (stellardb)
GO
Il existe une commande non documentée appelée dbcc PAGE. Il s’agit d’une commande interne utilisée par Microsoft. Cependant, vous pouvez l’utiliser pour diagnostiquer les pages de la base de données. Voici le code permettant d’utiliser cette commande.
DBCC PAGE (stellardb, n°1, 354, AVEC NOHEADER)
GO
Ici, stellardb est le nom de la base de données, n°1 est le numéro de fichier et 354 est le numéro de page.
Comment corriger une corruption des pages GAM, SGAM et IAM dans la base de données SQL ?
Vous trouverez ici des solutions pour corriger les erreurs de page GAM, SGAM et IAM ainsi que la corruption de la base de données SQL.
Remettre la base de données à partir d’une sauvegarde
Si vous disposez d’une copie de sauvegarde, vous pouvez l’utiliser pour remettre vos données en état. Voici les étapes à suivre pour remettre en état une sauvegarde de base de données à l’aide de SQL Server Management Studio (SSMS) :
- Dans SQL Server Management Studio (SSMS), allez dans l’Explorateur d’objets et cliquez avec le bouton droit de la souris sur Bases de données.
- Sélectionnez ensuite l’option Restaurer la base de données.
- Sur la page Général, sélectionnez Appareil, puis appuyez sur le bouton Parcourir pour sélectionner la sauvegarde et appuyez sur OK.
Utilisez la commande DBCC CHECKDB
Pour corriger les défauts de page GAM, SGAM et IAM et la corruption de la base de données, vous pouvez utiliser la commande DBCC CHECKDB dans SQL Server. Voici le code permettant de réparer la base de données à l’aide de la commande DBCC CHECKDB :
USE master ;
GO
ALTER DATABASE stellar®.
SET SINGLE_USER
AVEC UN RETOUR EN ARRIÈRE IMMÉDIAT ;
GO
DBCC CHECKDB('stellar',REPAIR_REBUILD)
GO
ALTER DATABASE stellar®.
SET MULTI_USER ;
GO
Le code ci-dessus accède à la base de données du système principal, la met en mode mono-utilisateur, la répare et la remet en mode multi-utilisateur.
Utilisez un logiciel tiers de réparation de bases de données SQL
Si la commande DBCC CHECKDB ne peut pas réparer la base de données, vous pouvez utiliser un logiciel de réparation SQL tiers, par exemple Stellar Repair for MS SQL. Ce logiciel peut réparer les fichiers de base de données SQL Server (mdf et ndf) de manière simple. Il peut récupérer toutes les données des fichiers de base de données endommagés et les enregistrer dans un nouveau fichier de base de données ou dans divers autres formats.
Pour réparer la base de données avec Stellar Repair for MS SQL, procédez comme suit :
Remarque : mettez la base de données hors ligne avant de lancer le processus de réparation.
- Téléchargez le logiciel à partir du site officiel.
- Installez le logiciel et démarrez-le.
- Cliquez sur Parcourir pour sélectionner le fichier de base de données (vous pouvez utiliser le bouton Rechercher si vous ne savez pas où est stocké le fichier de données).
- Une fois le fichier sélectionné, cliquez sur le bouton Réparer.
- Une fois les données réparées, vous pouvez les enregistrer dans une nouvelle base de données ou dans d’autres formats tels que CSV, HTML et Excel.
Meilleures pratiques pour prévenir la corruption des sites GAM, SGAM et IAM
Voici quelques conseils utiles que vous pouvez suivre pour éviter d’endommager les pages de la base de données SQL Server :
- Vérifiez votre matériel, en particulier vos disques, pour vous assurer qu’ils sont en bon état de fonctionnement. Remplacez les disques durs s’ils sont anciens ou s’ils présentent des erreurs. Si possible, créez un RAID miroir pour vos données SQL Server.
- Évitez les virus et les attaques de logiciels malveillants. Veillez à installer des logiciels antivirus et antispam.
- Sécurisez votre réseau avec les meilleurs pare-feu et la meilleure segmentation du réseau et cryptez vos données. Créez des réseaux VPN sûrs si nécessaire.
- Veillez à mettre à jour votre système d’exploitation et vos logiciels avec les dernières mises à jour.
Conclusion
Si les pages GAM, SGAM ou IAM de la base de données sont corrompues, le plus simple est de remettre la base de données à jour à partir de la dernière sauvegarde. Si la sauvegarde est obsolète ou ne fonctionne pas, vous pouvez essayer de réparer la base de données à l’aide de la commande DBCC CHECKDB. Dans certaines situations, la commande DBCC CHECKDB ne fonctionne pas. Dans ce cas, vous pouvez utiliser Stellar Repair for MS SQL. Ce logiciel peut facilement réparer la base de données endommagée et remettre tous les objets avec une intégrité complète.