Comment corriger l’erreur d’incohérence de la base de données avec SQL Server Cluster Failover ?
Résumé: Les erreurs d'incohérence de la base de données dans le serveur SQL peuvent se produire pour diverses raisons. Dans cet article, nous allons discuter des raisons possibles des erreurs d'incohérence de la base de données dans SQL Server Cluster Failover. Nous mentionnerons également un logiciel avancé de réparation des bases de données SQL Server qui vous permet de récupérer les données à partir des fichiers bakup (.bak) corrompus des bases de données SQL.
Il n’est pas rare que les utilisateurs rencontrent des erreurs d’incohérence de la base de données dans le serveur SQL. Une erreur typique que certains utilisateurs ont signalée après avoir déplacé un cluster d’un serveur à un autre et vérifié la base de données avec DBCC CHECKDB est la suivante :
SQL Server a détecté une erreur E/S basée sur la cohérence logique : somme de contrôle incorrecte. Elle se produit lors de la lecture de la page(11:132) dans la base de données ID 3 à l’offset 0x0000000013c)) dans le fichier ‘F:\MSSQL\DATA\MSDB.mdf.
Dans l’erreur ci-dessus, la page (11:132) signifie que le numéro de page est 132 et le numéro de fichier est 11.
Vous pouvez exécuter la requête suivante pour obtenir les ID de fichiers de la base de données :
SELECT file_id, name
FROM sys.master_files
WHERE name like 'stellardb%database name'
Une fois que vous avez l’ID de la page, vous pouvez utiliser la page DBCC pour vérifier l’état de la page.
DBCC TRACEON (3604) ;
DBCC PAGE (base de données, n°1, 132, 3)
DBCC TRACEOFF (3604);
Ici, 1 correspond à l’ID du fichier, 132 au numéro de page et 3 à l’affichage de l’en-tête et des informations détaillées de la ligne.
Vous pouvez également rechercher dans le journal des erreurs les erreurs liées aux incohérences dans un cluster de basculement. La procédure stockée étendue suivante peut vous aider à rechercher les erreurs :
EXEC sp_readerrorlog 0,1,N 'stellardb', 'wrong checksum';
Cette procédure stockée lit le journal du serveur SQL. Ici, 0 correspond à la lecture du journal des erreurs actuel et n°1 à la vérification des erreurs du serveur SQL. Stellardb est le nom de la base de données et incorrect checksum est le mot à rechercher dans le journal des erreurs.
Causes de l’erreur d’incohérence de la base de données de basculement de cluster SQL Server
Voici quelques raisons possibles de cette erreur dans le serveur SQL :
- Problèmes avec la carte NIC qui empêchent une synchronisation correcte entre les nœuds et causent des problèmes de cohérence des données.
- Problèmes ou problèmes avec le disque.
- Matériel endommagé ou défectueux.
- Virus ou infection par des logiciels malveillants.
Solutions pour résoudre l’erreur d’incohérence de la base de données avec SQL Server Cluster Failover
Vous pouvez essayer les solutions suivantes pour résoudre l’erreur d’incohérence de la base de données dans SQL Server.
1. Vérifiez l’état de la grappe.
Si cette erreur se produit dans un cluster de basculement, vous devez d’abord vérifier l’état du cluster. Pour ce faire, procédez comme suit :
- Exécutez la gestion du cluster de basculement.
- Allez dans Administration et cliquez sur pour confirmer la configuration.
- Suivez ensuite l’assistant pour exécuter le texte et vérifier le résumé afin de détecter les erreurs.
2. installez les dernières mises à jour
Il arrive qu’une version obsolète du serveur Windows entraîne des problèmes et des erreurs. Veillez donc à ce que les derniers correctifs et mises à jour soient installés sur votre serveur Windows. Microsoft publie également des mises à jour en rapport avec le cluster de basculement. Vous pouvez consulter l’historique des mises à jour pour la dernière version de Windows Server 2022 sur la page de soutien de Microsoft. Pour les versions plus anciennes, vous pouvez consulter le catalogue des mises à jour de Microsoft®.
3. vérifiez la carte NIC
La carte d’interface réseau (NIC) est utilisée pour synchroniser les informations entre les nœuds. La carte d’interface réseau est liée aux performances du basculement. Vous utilisez la carte d’interface réseau pour la communication entre les nœuds de la grappe. Le cluster utilise des signaux Heartbeat pour vérifier l’état des nœuds et effectue un basculement en cas de défaillance d’un nœud. Si la carte d’interface réseau a des problèmes, la synchronisation entre les nœuds échoue et endommage la base de données. Vous pouvez vérifier et remplacer la carte d’interface réseau pour résoudre le problème.
Comment puis-je remettre la base de données en état ?
Si votre base de données dans le cluster de basculement est endommagée, vous pouvez la remettre en état à partir de la sauvegarde. Vous pouvez utiliser SQL Server Management Studio pour remettre votre base de données à partir de la sauvegarde. Voici les étapes à suivre :
- Téléchargez SQL Server Management Studio (SSMS).
- Après l’installation, ouvrez SSMS.
- Sélectionnez le dossier Databases, cliquez dessus avec le bouton droit de la souris et sélectionnez l’option Restaurer la base de données.
- Sélectionnez l’option Périphérique et cliquez sur le bouton Parcourir.
- Cliquez sur le bouton Ajouter dans la fenêtre Sélectionner les périphériques de sauvegarde.
- Sélectionnez les jeux de sauvegarde et appuyez sur OK pour remettre la sauvegarde.
Vous pouvez également utiliser la commande T-SQL suivante pour remettre la base de données à partir de la sauvegarde :
USE [master]
RESTORE DATABASE [stellardb] FROM DISK = N'C:\MSSQL\Backup\stellardb.bak' WITH FILE = 1, MOVE N'AdventureWorks2017' TO N'C:\data\stellardb.mdf', MOVE N'AdventureWorks2017_log' TO N'C:\data\stellardb_log.ldf', NORECOVERY, NOUNLOAD, STATS = 5
RESTORE DATABASE [stellardb] FROM DISK = N'C:\MSSQL\Backup\stellar.bak' WITH FILE = 2, NOUNLOAD, STATS = 5
Code GOCopy
La commande ci-dessus remet en état la base de données appelée stellardb à partir de la sauvegarde stellar.bak.
Que dois-je faire si le jeu de sauvegarde est endommagé ?
Dans le cas où la sauvegarde de la base de données est corrompue ou si vous ne disposez pas d’une sauvegarde récente, vous pouvez faire appel à un logiciel de réparation SQL avancé appelé Stellar Repair for MS SQL – Technician. Ce logiciel peut réparer les bases de données SQL Server corrompues et récupérer les données des fichiers de sauvegarde SQL Server (.bak) corrompus.
Le logiciel dispose d’un module Réparer la base de données MS SQL qui vous permet de réparer les fichiers de base de données SQL Server, et le module Extraire de la sauvegarde MS SQL peut remettre les données à partir du fichier de sauvegarde (.bak). Il peut enregistrer les données remises dans un nouveau fichier de base de données, dans un fichier de base de données actuel (hors ligne) et dans un fichier Excel, CSV ou HTML.
Conclusion
Les erreurs d’incohérence de la base de données dans le serveur SQL peuvent se produire pour diverses raisons. Nous avons mentionné ci-dessus les solutions pour résoudre les erreurs d’incohérence dans SQL Server Cluster Failover. Une fois le problème résolu, vous devez remettre la base de données à partir de la dernière bonne sauvegarde connue. Si vous ne disposez pas d’une sauvegarde récente ou si la sauvegarde est corrompue, vous pouvez utiliser Stellar Repair for MS SQL – Technician. Ce logiciel peut remettre les données même à partir de fichiers de sauvegarde corrompus. Vous pouvez télécharger la version de démonstration du logiciel Stellar Repair for MS SQL – Technician pour tester ses fonctionnalités.