Comment corriger l'erreur 8909 dans la base de données MS SQL Server ?


Lorsque vous travaillez avec le serveur MS SQL, divers problèmes et erreurs se produisent souvent. L'une de ces erreurs est l'erreur 8909. Le message d'erreur complet s'affiche comme suit :

Msg 8909, level 16, status 1, line 1 Erreur de table : object ID 0, index ID -1, partition ID 0, allocation unit ID 0 (type unknown), page ID (1:72792) contains an incorrect page ID in its page header.

Cette erreur est généralement signalée par la commande DBCC CHECKDB si le contrôle d'intégrité de l'affectation des pages de la base de données a échoué. Cet échec est dû à un ID de page incorrect, à des problèmes avec les pages GAM, SGAM ou PFS ou à une corruption dans les tables. Parfois, ce message d'erreur est également renvoyé par l'instruction RAISERROR (Transact-SQL).

Nous allons examiner ci-dessous les causes de l'erreur 8909 dans SQL Server et discuter des solutions pour corriger cette erreur.

Causes de l'erreur 8909 dans la base de données MS SQL Server

L'erreur SQL 8909 est liée à des problèmes de niveau de page dans les fichiers de base de données ou à une corruption des tables de base de données. La corruption des tables de la base de données SQL peut être causée par différents facteurs, tels que

  • pannes de courant ou arrêt soudain du serveur SQL pendant que vous travaillez sur la base de données
  • Bugs dans le serveur SQL
  • Erreurs matérielles ou problèmes logiciels
  • Infection par un logiciel malveillant sur le système hébergeant la base de données
  • Arrêt incorrect du système
  • Fermeture forcée de l'application MS SQL

Méthodes de rectification de l'erreur 8909 dans la base de données MS SQL Server

Voici quelques méthodes que vous pouvez utiliser pour corriger l'erreur 8909 dans la base de données MS SQL Server.

Méthode 1 : Remettre la base de données à partir d'une sauvegarde

Si les pages de la base de données posent problème ou si les tables sont endommagées, la meilleure solution consiste à remettre la base de données en état à partir de la sauvegarde. Avant de remettre la base de données à partir de la sauvegarde, vous devez vérifier si votre fichier de sauvegarde est lisible. Cela permet d'éviter les erreurs lorsque vous remettez la sauvegarde. Pour vérifier le fichier de sauvegarde, vous pouvez exécuter l'instruction VERIFYONLY (Transact-SQL). Si cette instruction renvoie un message de réussite, vous pouvez poursuivre la restauration du fichier de sauvegarde. Pour ce faire, utilisez la commande suivante :

USE [master] ;

GO

BACKUP DATABASE [testing]

TO DISK = N'C:\NProgramme\NMicrosoft SQL Server\NMSSQL14.MSSQLSERVER\NMSSQL\NBackup\Ntesting.bak'

AVEC NOFORMAT, NOINIT,

NAME = N'testing-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 ;

GO

Copier le code

Cette commande permet de remettre en état l'ensemble de la base de données à partir de la sauvegarde.

Méthode 2 : Utiliser la méthode de la page de remise en état

L'erreur 8909 indique des pages corrompues dans le fichier de la base de données SQL. Dans un tel cas, vous pouvez remettre en état certaines pages endommagées de la base de données. Pour ce faire, vous pouvez utiliser la commande T-SQL ou le SQL Server Management Studio SSMS pour remettre les pages en état.

Pour remettre les pages en état avec T-SQL, exécutez la commande suivante :

REMETTRE LA BASE DE DONNÉES

 PAGE = ' [ ,... n ] ' [ ,... n ]

 DE [ ,... n ]

 AVEC NORECOVERY

Copier le code

Note : Vous avez besoin de l'ID du fichier de la base de données ainsi que de la page et de l'ID de la page. Vous trouverez ces informations dans le message d'erreur.

La méthode "Restauration de pages" ne permet de remettre que des pages de la base de données. Elle fonctionne pour les bases de données qui ont été créées en mode "Récupération complète des données" ou "Enregistrement en bloc". Elle ne peut pas remettre la page 0 de la page de démarrage du fichier, la page de démarrage de la base de données, le catalogue en texte intégral et le journal des transactions.

Méthode 3 : Utilisez la commande DBCC CHECKDB

Si la sauvegarde n'est pas lisible ou disponible, vous pouvez essayer de réparer la base de données SQL Server avec la commande DBCC CHECKDB. Vous pouvez utiliser l'option REPAIR_ALLOW_DATA_LOSS avec cette commande.

Note : Assurez-vous d'abord que vous disposez des droits d'administrateur et de l'autorisation ALTER pour la base de données avant d'utiliser la commande.

Commencez par faire passer la base de données en mode mono-utilisateur en procédant comme suit :

ALTER DATABASE datenbank_name SET SINGLE_USER WITH ROLLBACK IMMEDIATE

Copier le code

Cela empêche les autres utilisateurs de modifier la base de données pendant le processus de réparation.

Exécutez ensuite la commande DBCC CHECKDB comme indiqué ci-dessous :

sql

DBCC CHECKDB('YourDatabaseName', REPAIR_ALLOW_DATA_LOSS) ;

GO

Copier le code

Une fois le processus de réparation terminé, modifiez le mode de la base de données d'utilisateur unique à multi-utilisateur à l'aide de la commande suivante :

ALTER DATABASE database name SET MULTI_USER WITH ROLLBACK IMMEDIATE;Copy code

Remarque : l'utilisation de l'option de réparation REPAIR_ALLOW_DATA_LOSS peut entraîner la libération des pages et des lignes de la table qui ne peuvent pas être remises en état, ce qui entraîne une perte de données. La récupération complète des données n'est donc pas garantie.

Méthode 4 : utiliser un programme de réparation SQL avancé

Si vous ne disposez pas d'une sauvegarde saine et récente ou si vous avez besoin de réparer une base de données SQL sans perte de données, utilisez l'outil de réparation SQL avancé Stellar Repair for MS SQL. L'outil de réparation SQL est conçu pour réparer les fichiers de base de données SQL corrompus (fichiers MDF et NDF) avec une intégrité et une précision complètes. Il peut récupérer tous les objets, y compris les pages, les tables et les procédures, à partir du fichier de base de données.

L'outil vous permet d'enregistrer toutes les données récupérées de la base de données dans un nouveau fichier de base de données SQL et dans divers autres formats. Il peut vous aider à réparer les erreurs liées à la corruption des bases de données SQL, y compris l'erreur 8909.

Points forts de Stellar Repair for MS SQL

  • Répare avec précision les fichiers MDF et NDF endommagés.
  • Remet en état tous les objets du fichier supprimé, y compris les tables, les index et même les registres supprimés.
  • Permet d'enregistrer les données remises en état dans un nouveau fichier de base de données ou dans un fichier de base de données existant (hors ligne) et dans d'autres formats tels que Excel, CSV, HTML, etc.
  • Fournit une fonction de recherche pour trouver et remettre en état des objets spécifiques.
  • Fournit un aperçu des données remises en état avant l'enregistrement.
  • Prise en charge de MS SQL version 2022, 2019, 2017, 2016 et antérieures.

À la fin

Vous pouvez corriger l'erreur 8909 dans la base de données MS SQL Server en utilisant les méthodes mentionnées ci-dessus. Vous pouvez remettre la base de données affectée à partir de la sauvegarde ou utiliser la commande DBCC CHECKDB pour réparer la base de données. Cependant, si vous avez besoin d'une méthode plus rapide et plus fiable pour réparer l'erreur 8909, utilisez un outil de réparation SQL comme Stellar Repair for MS SQL. Cet outil puissant peut extraire toutes les données de la base de données contenant les pages corrompues et les enregistrer dans un nouveau fichier de base de données, aidant ainsi à réparer l'erreur. Il soutient les fichiers MDF et NDF.



Was this article helpful?
À propos de l'auteur
author image
Himanshu Shakya

Himanshu is a Tech Enthusiast & Blogger at Stellar and having knowledge of Japanese Language. And apart from this in his spare time he likes playing Chess.

Table des matières

POURQUOI STELLAR® EST LE LEADER MONDIAL

Pourquoi choisir Stellar?
  • 0M+

    CLIENTS

  • 0+

    Des années d'excellence

  • 0+

    INGÉNIEURS R&D

  • 0+

    PAYS

  • 0+

    TÉMOIGNAGES

  • 0+

    RÉCOMPENSES REÇUES