web-dev-qa-db-fra.com

Erreur d'E / S basée sur la cohérence DBCC CHECKDB

Fonctionnement:

DBCC CHECKDB(DatabaseName) with NO_INFOMSGS 

me donne l'erreur suivante:

Msg 824, niveau 24, état 2, ligne 1
SQL Server a détecté une erreur d'E/S basée sur la cohérence logique: ID de page incorrect (attendu 1: 7753115; réel 0: 0). Il s'est produit lors d'une lecture de page (1: 7753115) dans l'ID de base de données 11 à l'offset 0x00000ec9b36000 dans le fichier 'K:\UAT Databases\dbname.MDF'. Des messages supplémentaires dans le journal des erreurs SQL Server ou le journal des événements système peuvent fournir plus de détails. Il s'agit d'une condition d'erreur grave qui menace l'intégrité de la base de données et doit être corrigée immédiatement. Effectuez une vérification complète de la cohérence de la base de données (DBCC CHECKDB). Cette erreur peut être causée par de nombreux facteurs; pour plus d'informations, consultez la documentation en ligne de SQL Server. '

J'ai également trouvé une entrée dans dbo.suspect_pages

S'il vous plaît donnez votre avis.

4
user3688698
  1. Assurez-vous d'avoir une sauvegarde valide; nous espérons que ce sera avant la corruption, mais il n'y a pas si longtemps que les données ne sont pas utiles. Vous devez mettre cela de côté au cas où la réparation directe n'est pas possible et vous devez récupérer les données de la sauvegarde.

  2. La documentation explique ce qu'il faut faire pour corriger le problème - vous pouvez essayer le REPAIR_REBUILD option, et si cela ne le résout pas, vous pouvez passer aux étapes suivantes selon le type qui a écrit CHECKDB, Paul Randal. Il a ne tonne d'articles sur CHECKDB , qui couvrent à peu près tous les scénarios imaginables, mais ceux qui vous concernent dépendront de ce qui se passera ensuite lorsque vous tenterez votre réparation. Celui qui peut être utile comme début, donc vous savez quelle table vous devrez corriger:

8
Aaron Bertrand

Exécutez la commande suivante pour suivre les pages corrompues:

SELECT * FROM msdb.dbo.suspect_pages

Passez en revue les pages suspectes.

Exécutez la commande DBCC CHECKDB pour vérifier les incohérences de la base de données. Veuillez cocher l'option PAGE_VERIFY CHECKSUM et l'activer.

Remarque: Vérifiez également le matériel de votre machine.

2
Sean Smith

Voici un excellent article sur la récupération d'une base de données défectueuse:

www.sqlservercentral.com/articles/Corruption/65804/

Tout d'abord, il conseille des choses comme: ne paniquez pas, ne redémarrez pas le serveur, n'exécutez pas une DBCC CHECKDB(DB_NAME, REPAIR_ALLOW_DATA_LOSS)

Vous guide ensuite à travers les correctifs courants aux erreurs courantes dans la base de données, telles que:
- Métadonnées spatiales inexactes
- Corruption uniquement dans les index non clusterisés
- Corruption dans les pages LOB
- Erreurs de pureté des données
- Corruption dans l'index ou le tas en cluster
- Corruption dans les métadonnées
- Tables système endommagées
- Pages d'allocation endommagées

1
noelicus

Je n'ai jamais eu de page corrompue auparavant. Pouvez-vous fournir des informations à partir du dbo.suspect_pages table?

Veuillez consulter les ressources ci-dessous:

Brent Ozar sur la corruption

Corruption centrale de SQL Server

1
Arthur D

Plusieurs raisons peuvent provoquer une erreur d'E/S basée sur la cohérence logique de la base de données:

  • Arrêt/plantage inattendu du système ou arrêt forcé
  • L'administrateur SQL essaie d'interroger ou de modifier des données SQL

Cet article sur SQL Server Central sur erreur de cohérence logique en SQL est étonnamment écrit par SQL DBA.

1
Priyanka