Réparez la corruption de la base de données : GAM, SGAM et IAM dans SQL Server

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) :

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.

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 :

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.

Related Post

Exit mobile version