Summary: Lors de la vérification de l'intégrité de la base de données avec la commande DBCC CHECKDB, l'erreur "Incorrect PFS free space information" peut se produire. Cette erreur se produit généralement lorsqu'il y a un problème avec les pages d'espace libre (PFS). Dans cet article, vous apprendrez comment réparer l'erreur d'espace libre dans SQL Server. Nous mentionnons également un outil avancé de réparation de base de données SQL que vous pouvez utiliser pour réparer une base de données SQL corrompue sans perte de données.
La page est une unité de stockage primaire dans le serveur SQL. Le serveur effectue toutes les opérations d’E/S sur disque au niveau de la page. PFS (Page Free Space) est l’une des pages du fichier de base de données SQL qui gère l’état d’allocation de chaque page. Elle enregistre des informations sur la quantité d’espace libre disponible sur chaque page. Le moteur de base de données SQL Server utilise les pages PFS pour déterminer quelles pages sont allouées ou libres. Le PFS enregistre l’état d’allocation, les types de page et la quantité d’espace libre disponible sur les pages de la base de données SQL.
Parfois, en raison d’incohérences dans la base de données, les informations stockées sur les pages ne correspondent pas au type réel. Cela peut entraîner des erreurs d’espace libre. L’erreur “Incorrect PFS free space information” est l’une de ces erreurs. Cette erreur se produit lorsque vous vérifiez l’intégrité de la base de données à l’aide de la commande DBCC CHECKDB et que le contrôle d’intégrité échoue en raison d’incohérences ou de corruption dans la base de données. Nous expliquons ci-dessous les raisons de l’erreur “Incorrect PFS free space information” dans SQL Server et les solutions pour corriger cette erreur.
Raisons d’une erreur dans les informations sur l’espace libre du PFS
La corruption des fichiers de base de données (.MDF/.NDF) peut entraîner le message d’erreur “Incorrect PFS free space information”. La corruption des fichiers de base de données peut se produire pour les raisons énumérées ci-dessous :
- Arrêt soudain du système
- Bugs dans MS SQL Server
- Fichier de base de données volumineux ou surdimensionné
- MS SQL Server ne se ferme pas correctement ou de manière inattendue lorsque la base de données est ouverte.
- Problème avec le disque dur sur lequel la base de données est stockée.
- Le système sur lequel les fichiers de données sont stockés est infecté par un virus.
Méthodes de rectification de l’erreur “Informations incorrectes sur l’espace libre du PFS
Le message d’erreur “Incorrect PFS free space information” apparaît si la commande DBCC CHECKDB détecte des dommages dans la base de données. Elle affiche le nom de l’objet, le nom de la table, l’ID de l’objet, l’ID de la partition et l’ID de la page et recommande une option de réparation appropriée. Vous pouvez donc déplacer les données vers de nouvelles pages, remettre la base de données à partir d’une sauvegarde ou réparer la base de données pour tenter de corriger l’erreur. Voici comment cela fonctionne.
1 – Déplacer des données vers de nouvelles pages
La commande DBCC CHECKDB affiche le nom de la table dans laquelle se trouvent les pages PFS problématiques. Vous pouvez essayer de copier les données de la table source dans une nouvelle table. Cela affectera de nouvelles pages de données et entrées PFS. Supprimez ensuite la table source et donnez à la nouvelle table le même nom que la table source. Cela peut vous aider à résoudre les problèmes.
Remarque : cette méthode fonctionne si vous connaissez le nom de la table à laquelle appartiennent les pages PFS problématiques.
2 – Restaurer la base de données à partir de la sauvegarde
Si la base de données est endommagée ou illisible, vous pouvez la remettre en état à l’aide de la dernière sauvegarde mise à jour. Vous pouvez utiliser SQL Server Management Studio (SSMS) pour remettre en état la sauvegarde de la base de données SQL. Suivez les étapes énumérées ci-dessous :
- Ouvrez SSMS et allez dans l’Explorateur d’objets.
- Cliquez avec le bouton droit de la souris sur Bases de données et sélectionnez l’option Restaurer la base de données.
- Sur la page Général, dans la section Source, sélectionnez l’option Périphérique pour spécifier la source et le bureau des jeux de sauvegarde à remettre.
- Sélectionnez le nom de la base de données dans la section Destination.
- Dans le champ Restaurer vers, vous pouvez laisser le paramètre par défaut Vers la dernière sauvegarde créée.
- Dans la grille Jeux de sauvegarde à remettre, cliquez sur les sauvegardes que vous souhaitez remettre.
- Sur la page Options, vous pouvez sélectionner les options souhaitées dans la section Options de remise en état. Cliquez ensuite sur OK.
Vous pouvez également remettre la base de données à partir d’une sauvegarde en exécutant le code T-SQL suivant :
RESTORE DATABASE [employee] FROM DISK = N'C:\NBackup\employee.bak' WITH FILE = n°1, NOUNLOAD, STATS = 10
Ici, ’employee’ est le nom de la base de données et ‘N’C:\NBackup\employee.bak’ est le bureau où la sauvegarde est stockée. Le fichier est FICHIER 1 et STAT = 10 indique la progression de la remise à zéro tous les 10%.
3 – Réparez la base de données avec la commande DBCC CHECKDB
Si vous ne disposez pas d’une sauvegarde récente, vous pouvez utiliser la commande DBCC CHECKDB pour réparer la base de données. Elle peut réparer tous les objets d’une base de données SQL endommagée, y compris les pages d’index, les pages PFS et les autres pages de mappage. Vous pouvez exécuter la commande DBCC CHECKDB avec l’option REPAIR_ALLOW_DATA_LOSS comme indiqué ci-dessous :
Note : Avant d’utiliser la commande, vous devez créer une sauvegarde de votre base de données SQL.
DBCC CHECKDB ('employee', REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS ;
GO
Remarque : Lors de la réparation de la base de données SQL avec la commande DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS, les pages ou séries de pages PFS sont réaffectées. Cela peut entraîner une perte de données.
Si la commande DBCC CHECKDB échoue, vous pouvez utiliser un outil de réparation SQL tiers fiable, tel que Stellar Repair for MS SQL. Cet outil peut réparer les fichiers de base de données SQL (.mdf et .ndf) facilement et sans perte de données. Il peut récupérer tous les objets de la base de données endommagée, y compris les pages, les index, les tables et les procédures stockées. Il enregistre ensuite les données récupérées dans un nouveau fichier de base de données sain (.mdf). Cela permet de résoudre les problèmes causés par la corruption du fichier de base de données. L’outil soutient la réparation et la récupération des données des bases de données créées dans SQL Server 2022, 2019, 2017, 2016 et les versions antérieures.
Conclusion
L’erreur “Incorrect PFS free space information” se produit lorsque le moteur de recherche SQL ne peut pas lire les pages PFS. Si les pages d’espace libre des fichiers de base de données sont corrompues, vous pouvez remettre la base de données à jour à partir de la dernière sauvegarde. Toutefois, si la sauvegarde n’a pas été mise à jour, vous pouvez réparer la base de données à l’aide de la commande DBCC CHECKDB. Cependant, la meilleure façon de réparer une base de données sans perte de données est d’utiliser un outil de réparation de base de données SQL avancé tel que Stellar Repair for MS SQL. Il s’agit d’un outil recommandé par MVP qui peut réparer les fichiers MDF et NDF. Il peut récupérer toutes les données du fichier de base de données corrompu avec une précision absolue.