Comment vérifier la corruption d’une base de données dans SQL Server ?
Résumé: En tant qu'administrateur de base de données, vous ne pouvez pas faire grand-chose pour empêcher la corruption d'une base de données SQL. Cependant, vous pouvez essayer de vérifier si la base de données est corrompue afin de résoudre le problème le plus rapidement possible et d'éviter la perte de données. Dans cet article, nous discuterons des différentes méthodes permettant de vérifier la corruption d'une base de données dans le serveur SQL. Nous vous présenterons également un outil avancé de réparation des bases de données SQL que vous pouvez utiliser pour réparer une base de données corrompue rapidement et sans perte de données.
MS SQL Server stocke tous les objets, tels que les tables, les vues, les fonctions, les procédures stockées, les déclencheurs, etc. dans des fichiers de base de données. Comme les autres fichiers de base de données, les fichiers de base de données de MS SQL Server sont également susceptibles d’être corrompus et de présenter des problèmes d’intégrité. La corruption des bases de données SQL est généralement due à des problèmes matériels, par exemple des erreurs au niveau du disque, de l’unité centrale, de l’unité de mémoire, etc. Parfois, des interférences avec des logiciels tiers ou des logiciels incompatibles, ainsi que des infections par des virus ou des logiciels malveillants, peuvent également entraîner la corruption de la base de données.
Si la base de données est corrompue, il se peut que vous receviez des erreurs lorsque vous ouvrez le fichier de la base de données ou que vous ne puissiez même plus accéder à la base de données. Toutefois, ce n’est pas toujours le cas. Dans certains cas, vous ne recevrez pas de message d’erreur ou d’attention concernant la corruption de la base de données. Par conséquent, si vous rencontrez des problèmes avec votre base de données ou si vous soupçonnez une corruption du fichier de base de données, vous devez immédiatement vérifier si le fichier de base de données est corrompu. Dans cet article, nous allons expliquer quelques méthodes avec des instructions étape par étape pour vérifier la corruption de la base de données dans SQL Server.
Méthodes de vérification de la corruption de la base de données SQL Server
Il existe des utilitaires dans MS SQL Server qui peuvent vous aider à détecter la corruption d’une base de données. Voyons comment vous pouvez utiliser ces utilitaires pour vérifier la corruption d’une base de données SQL Server.
Méthode 1 – Vérifier le tableau des pages suspectes
MS SQL Server gère les journaux des pages suspectes dans la table suspect_pages de la base de données msdb. La table dbo_suspect_pages contient toutes les pages corrompues (avec une limite de n°1000 lignes) signalées par les requêtes SQL. Vous pouvez surveiller la table suspect_pages pour détecter rapidement les pages corrompues dans votre base de données. Pour rechercher des pages corrompues dans la table suspect_pages, exécutez la requête suivante :
SELECT * FROM msdb..
Remarque : Cette requête ne vérifie que les entrées qui ont été endommagées précédemment. Les entrées plus récentes ne sont pas vérifiées.
Pour plus d’informations, voir Comment surveiller les pages suspectes dans la base de données SQL ?
Méthode 2 – Utilisez l’option PAGE Verify
Si CHECKSUM est activé dans l’option PAGE_VERIFY, le moteur de base de données SQL Server calcule le CHECKSUM sur l’ensemble de la page à chaque fois qu’une page est écrite sur le disque dur et enregistre la valeur dans l’en-tête de la page. Lorsque la page est relue, la somme de contrôle est recalculée et comparée à la valeur enregistrée. En cas d’écart, le serveur émet un message d’erreur. Cela indique que la page a été endommagée.
Vous pouvez utiliser l’option PAGE_VERIFY pour reconnaître les dommages au niveau de la page dans la base de données. Pour ce faire, exécutez la requête suivante :
SELECT name, page_verify_option_desc FROM sys.
Méthode 3 – Exécuter DBCC CHECKDB
Vous pouvez exécuter la commande DBCC CHECKDB pour vérifier l’intégrité globale de la base de données. Elle vérifie les incohérences dans la base de données ainsi que la corruption des tables, des pages de données et des index. Pour vérifier la corruption de la base de données SQL, exécutez la commande suivante :
DBCC CHECKDB 'nom_de_la_banque';
S’il détecte un dommage, il vous envoie un retour d’erreur de cohérence accompagné d’un message d’erreur et d’une description et recommande également l’option de réparation pour résoudre les problèmes.
Méthode 4 – Créer des alertes pour l’agent SQL Server
Avec les alertes de l’agent SQL Server, vous pouvez créer différents types d’alertes pour être informé lorsqu’une condition ou un événement critique se produit et risque de corrompre ou d’endommager la base de données SQL. Le serveur SQL génère des événements qui sont stockés dans le journal des applications Windows. Ce journal d’application est lu par l’agent SQL Server, qui compare les événements du journal avec les alertes que vous avez créées. En cas de divergence, l’agent du serveur SQL envoie une alerte – une réponse automatique à une action ou à un événement. De cette manière, vous pouvez être averti en cas de corruption ou d’autre problème dans la base de données.
Voici les étapes à suivre pour configurer les alertes de l’agent SQL Server :
- Ouvrez SQL Server Management Studio (SSMS), cliquez avec le bouton droit de la souris sur SQL Server Agent, puis cliquez sur Propriétés.
- Sur la page des propriétés, sous Sélectionner une page, cliquez sur Système d’alerte.
- Sur la page “Systèmes d’alarme”, cochez la case Activer le profil de messagerie et sélectionnez Base de données de messagerie dans la liste Système de messagerie.
- Sélectionnez un profil de messagerie dans la liste Profil de messagerie.
- Cliquez sur OK pour configurer le courrier électronique de l’agent SQL Server.
- Pour créer des alertes, développez l’agent SQL Server, cliquez avec le bouton droit de la souris sur le dossier Alertes et sélectionnez Nouvelle alerte.
- Saisissez le nom de l’alarme. Par exemple, “Corruption suspectée” (ou ce que vous voulez). Laissez le nom de la base de données à <toutes les bases de données>. Sélectionnez ensuite l’option “023 – Erreur fatale : Intégrité de la base de données suspectée” dans la liste déroulante Gravité.
- Cliquez sur l’onglet Réponse sous Sélectionner une page. Procédez comme suit sur la page de réponse :
- Cochez la case Notifier l’opérateur.
- Sélectionnez un opérateur existant ou créez-en un nouveau auquel vous aurez attribué une adresse électronique.
- Activez la case à cocher Courriel.
- Cliquez sur OK.
Que dois-je faire si la base de données du serveur SQL est endommagée ?
Si votre base de données SQL Server est corrompue, la solution la plus simple et la plus recommandée consiste à remettre la base de données en état à partir d’une bonne sauvegarde connue. Si vous ne disposez pas d’une sauvegarde, suivez les méthodes énumérées ci-dessous pour réparer le fichier de base de données corrompu.
1. réparez la base de données avec la commande DBCC CHECKDB
Vous pouvez utiliser la commande DBCC CHECKDB pour réparer la base de données endommagée. Pour réparer la base de données, commencez par la mettre en mode SINGLE_USER afin d’éviter que d’autres utilisateurs ne modifient les données pendant le processus de réparation. Pour ce faire, exécutez la commande suivante :
ALTER DATABASE databasename SET
Vous pouvez exécuter la commande DBCC CHECKDB avec REPAIR_REBUILD pour réparer la base de données SQL corrompue sans risque de perte de données. Voici la commande :
DBCC CHECKDB ('Database_name', REPAIR_REBUILD);
L’option ‘REPAIR_REBUILD’ peut être utilisée pour réparer les index, y compris les index non groupés. Cela peut aider à réparer les dommages mineurs subis par la base de données.
Pour remettre la base de données rapidement, vous pouvez utiliser l’option REPAIR_FAST avec la commande. Cependant, elle ne conserve la syntaxe que pour des raisons de compatibilité descendante. Voici la commande :
DBCC CHECKDB (' Nom_de_la_banque_de_données', REPAIR_FAST)
Code GOCopy
Si la base de données est gravement endommagée, vous pouvez exécuter la commande DBCC CHECKDB avec REPAIR_ALLOW_DATA_LOSS. Voici la commande :
DBCC CHECKDB ('Database_name', REPAIR_ALLOW_DATA_LOSS);
Cette option de réparation peut corriger tous les types d’erreurs signalées par DBCC CHECKDB, mais elle peut entraîner une perte de données. C’est pourquoi elle est recommandée en dernier recours pour corriger les erreurs de cohérence dans la base de données.
2. réparer une base de données endommagée avec le logiciel professionnel de réparation SQL
Pour réparer la base de données endommagée rapidement et sans perte de données, vous pouvez utiliser un outil spécialisé de réparation de bases de données SQL tel que Stellar Repair for SQL. Cet outil recommandé par MVP peut réparer les fichiers MDF et NDF. Il peut récupérer tous les objets tels que les tables, les registres supprimés, etc. de la base de données endommagée et les enregistrer dans un nouveau fichier MDF avec une intégrité complète. Il peut vous aider à résoudre toutes sortes de problèmes de corruption dans la base de données. Le logiciel est facile à télécharger et à installer. Il peut être exécuté sur les systèmes Windows et Linux (Ubuntu, CentOS 7 et Red Hat Enterprise Linux 7 OS).
Conclusion
Plusieurs raisons peuvent entraîner la corruption d’une base de données SQL. Vous pouvez ne pas savoir si une base de données est corrompue jusqu’à ce qu’elle devienne inaccessible ou qu’elle déclenche des erreurs. Si vous pensez que votre base de données est corrompue, il est important de vérifier si elle l’est. Vous pouvez utiliser les méthodes décrites dans cet article pour détecter une corruption de la base de données.
Si la base de données est corrompue, vous pouvez essayer de la réparer à l’aide de la commande DBCC CHECKDB, mais cela peut entraîner une perte de données. Sinon, vous pouvez utiliser un outil de réparation SQL professionnel tel que Stellar Repair for MS SQL pour réparer la base de données avec une précision absolue. L’outil peut réparer les bases de données SQL de n’importe quelle capacité et de n’importe quelle version de SQL Server. Il soutient MS SQL Server 2022 et les versions antérieures.