Partager via


Gérer la table suspect_pages (SQL Server)

Cette rubrique explique comment gérer la table suspect_pages dans SQL Server 2014 à l’aide de SQL Server Management Studio ou de Transact-SQL. La table suspect_pages est utilisée pour conserver des informations sur les pages suspectes et est pertinente pour aider à déterminer si une restauration est nécessaire. La table suspect_pages réside dans la base de données msdb.

Une page est considérée comme « suspecte » lorsque le moteur de base de données SQL Server rencontre l’une des erreurs suivantes lorsqu’il tente de lire une page de données :

  • Erreur 823 provoquée par une vérification de redondance cyclique (CRC) émise par le système d’exploitation, telle qu’une erreur de disque (certaines erreurs matérielles)

  • Une erreur 824, telle qu’une page déchirée (toute erreur logique)

L’ID de page de chaque page suspecte est enregistré dans la table suspect_pages . Le moteur de base de données enregistre les pages suspectes rencontrées pendant le traitement régulier, par exemple :

  • Une requête doit lire une page.

  • Pendant une opération DBCC CHECKDB.

  • Pendant une opération de sauvegarde.

La table suspect_pages est également mise à jour si nécessaire lors d’une opération de restauration, d’une opération de réparation DBCC ou d’une opération de suppression de base de données.

Dans cette rubrique

Avant de commencer

Recommandations

  • Erreurs enregistrées dans la table suspect_pages

    La table suspect_pages contient une ligne par page qui a échoué avec une erreur 824, jusqu’à une limite de 1 000 lignes. Le tableau suivant présente les erreurs enregistrées dans la colonne event_type de la table suspect_pages .

    Description de l’erreur valeur de event_type
    Erreur 823 provoquée par une erreur CRC du système d’exploitation ou une erreur 824 autre qu’une somme de contrôle incorrecte ou une page déchirée (par exemple, un ID de page incorrect) 1
    Somme de contrôle incorrecte 2
    Page déchirée 3
    Restauré (la page a été restaurée après qu’elle a été marquée comme incorrecte) 4
    Réparé (DBCC, AlwaysOn ou mirroring a réparé la page) 5
    Désalloué par DBCC 7

    La table suspect_pages enregistre également les erreurs temporaires. Les sources d’erreurs transitoires incluent une erreur d’E/S (par exemple, un câble a été déconnecté) ou une page qui échoue temporairement à un test de checksum répété.

  • Comment le moteur de base de données met à jour la table suspect_pages

    Le moteur de base de données effectue les actions suivantes sur la table suspect_pages :

    • Si la table n’est pas complète, elle est mise à jour pour chaque erreur 824, pour indiquer qu’une erreur s’est produite et que le compteur d’erreurs est incrémenté. Si une page a une erreur après avoir été corrigée en étant réparée, restaurée ou désallouée, son compteur d’erreurs number_of_errors est incrémenté et la colonne dernière_mise_à_jour est mise à jour

    • Une fois qu’une page répertoriée est corrigée par une opération de restauration ou de réparation, l’opération met à jour la ligne suspect_pages pour indiquer que la page est réparée (event_type = 5) ou restaurée (event_type = 4).

    • Si une vérification DBCC est exécutée, la vérification marque toutes les pages sans erreur comme réparées (event_type = 5) ou libérées (event_type = 7).

  • Mises à jour automatiques de la table suspect_pages

    Un partenaire de mise en miroir de bases de données ou un réplica de disponibilité AlwaysOn met à jour la table suspect_pages après l'échec d'une tentative de lecture d'une page à partir d'un fichier de données pour l'une des raisons suivantes.

    • Erreur 823 provoquée par une erreur CRC du système d’exploitation.

    • Erreur 824 (altération logique telle qu’une page déchirée).

    Les actions suivantes mettent également automatiquement à jour les lignes de la table suspect_pages .

    • DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS met à jour la table suspect_pages pour indiquer à chaque page qu’elle a libérée ou réparée.

    • Une restauration complète, d’un fichier ou d’une page RESTORE marque les entrées de page comme restaurées.

    Les actions suivantes suppriment automatiquement les lignes de la table suspect_pages .

    • MODIFIER BASE DE DONNÉES SUPPRIMER FICHIER

    • SUPPRIMER BASE DE DONNÉES

  • Rôle de maintenance de l’administrateur de base de données

    Les administrateurs de base de données sont responsables de la gestion de la table, principalement en supprimant les anciennes lignes. La table suspect_pages est limitée en taille et, si elle se remplit, les nouvelles erreurs ne sont pas journalisées. Pour empêcher ce remplissage de cette table, l’administrateur de base de données ou l’administrateur système doit supprimer manuellement les anciennes entrées de cette table en supprimant des lignes. Par conséquent, nous vous recommandons de supprimer ou d’archiver régulièrement les lignes dont l'event_type est "restauré" ou "réparé", ou les lignes qui ont une ancienne valeur de last_update.

    Pour surveiller l’activité sur la table suspect_pages, vous pouvez utiliser la classe d’événements Base de données suspectes. Les lignes sont parfois ajoutées à la table suspect_pages en raison d’erreurs temporaires. Si de nombreuses lignes sont ajoutées à la table, c'est probablement qu'il existe un problème avec le sous-système d’E/S. Si vous remarquez une augmentation soudaine du nombre de lignes ajoutées à la table, nous vous recommandons d’examiner les problèmes possibles dans votre sous-système d’E/S.

    Un administrateur de base de données peut également insérer ou mettre à jour des enregistrements. Par exemple, la mise à jour d’une ligne peut s’avérer utile lorsque l’administrateur de base de données sait qu’une page suspecte particulière est réellement intacte, mais souhaite conserver l’enregistrement pendant un certain temps.

Sécurité

Autorisations

Toute personne ayant accès à msdb peut lire les données dans la table suspect_pages . Toute personne disposant de l’autorisation UPDATE sur la table suspect_pages peut mettre à jour ses enregistrements. Les membres du rôle de base de données fixe db_owner sur msdb ou le rôle serveur fixe sysadmin peuvent insérer, mettre à jour et supprimer des enregistrements.

Utilisation de SQL Server Management Studio

Pour gérer la table suspect_pages

  1. Dans l’Explorateur d’objets, connectez-vous à une instance du moteur de base de données SQL Server, développez cette instance, puis développez bases de données.

  2. Développez Bases de données système, développez msdb, développez Tables, puis développez Tables système.

  3. Développez dbo.suspect_pages et cliquez avec le bouton droit sur Modifier les 200 premières lignes.

  4. Dans la fenêtre de requête, modifiez, mettez à jour ou supprimez les lignes souhaitées.

Utilisation de Transact-SQL

Pour gérer la table suspect_pages

  1. Connectez-vous au moteur de base de données.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.

  3. Copiez et collez les exemples suivants dans la fenêtre de requête, puis cliquez sur Exécuter. Cet exemple supprime certaines lignes de la suspect_pages table.

-- Delete restored, repaired, or deallocated pages.  
DELETE FROM msdb..suspect_pages  
   WHERE (event_type = 4 OR event_type = 5 OR event_type = 7);  
GO  
  

Cet exemple retourne les pages incorrectes dans le suspect_pages tableau.

-- Select nonspecific 824, bad checksum, and torn page errors.  
SELECT * FROM msdb..suspect_pages  
   WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);  
GO  
  

Voir aussi

DROP DATABASE (Transact-SQL)
RESTORE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC (Transact-SQL)
Restaurer des pages (SQL Server)
suspect_pages (Transact-SQL)
MSSQLSERVER_823
MSSQLSERVER_824