Partager via


MSSQLSERVER_824

S'applique à : SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 824
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique B_HARDSSERR
Texte du message SQL Server a détecté une erreur d'E/S logique et relative à la cohérence. L'erreur %ls s'est produite pendant une opération de %S_MSG de la page %S_PGID dans la base de données avec l'ID %d au niveau du décalage %#016I64x dans le fichier '%ls'. Des messages supplémentaires dans le journal des erreurs SQL Server ou le journal des erreurs du système d’exploitation 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 qui doit être immédiatement corrigée. 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, consulter https://go.microsoft.com/fwlink/?linkid=2252374.

Symptôme

Vous pouvez rencontrer le message d’erreur suivant dans le journal des erreurs de SQL Server ou dans le journal des événements des applications Windows en cas d’échec d’une vérification de cohérence logique après la lecture ou l’écriture d’une page de base de données :

2022-11-02 15:46:42.90 spid51      Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51      SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see https://go.microsoft.com/fwlink/?linkid=2252374.

Si une requête SELECT ou DML s’exécute dans ce message, le message d’erreur est renvoyé à l’application et la connexion à la base de données est terminée.

Cause

Cette erreur indique que Windows considère que la page est correctement lue à partir du disque alors que SQL Server signale qu'il y a un problème avec la page. Cette erreur est similaire à l'Erreur 823, à la différence qu'elle n'a pas été détectée par Windows. L’erreur 824 indique généralement un problème dans le sous-système d’E/S tel que des lecteurs de disque défaillants, des problèmes de micrologiciel, des pilotes de périphérique défectueux, etc. Pour plus d’informations sur les erreurs d’E/S, consultez Concepts de base des E/S Microsoft SQL Server, chapitre 2.

SQL Server utilise les API Windows suivantes pour effectuer les opérations d’E/S : ReadFile, WriteFile, ReadFileScatter et WriteFileGather. Après avoir terminé ces opérations d’E/S, SQL Server vérifie s’il existe des conditions d’erreur en lien avec ces appels d’API. Si ces appels d’API échouent avec une erreur du système d’exploitation, SQL Server signale l’Erreur 823. Il peut arriver que l’appel de l’API Windows aboutisse, mais que les données transférées par l’opération d’E/S aient rencontré un problème de cohérence logique. Ces problèmes de cohérence logique sont signalés par l’erreur 824.

L’erreur 824 contient les informations suivantes :

  • Fichier de base de données sur lequel l’opération d’E/S est effectuée
  • Décalage par rapport au fichier où l’opération d’E/S a été tentée
  • Base de données à laquelle ce fichier appartient
  • Numéro de page impliqué dans l’opération d’E/S
  • L’opération était-elle une opération de lecture ou d’écriture
  • Détails sur la vérification de cohérence logique qui a échoué (le type de vérification, la valeur réelle et òa valeur attendue utilisées pour cette vérification)

Ces contrôles de cohérence logiques sont des contrôles d’intégrité effectués par SQL Server pour s’assurer que les éléments clés des données impliquées dans le transfert d’E/S sont restés intacts tout au long de l’opération d’E/S. Les vérifications incluent Somme de contrôle, Page endommagée, Transfert rapide, ID de page incorrect, Lecture obsolète, Échec de l’audit de page. La nature des vérifications effectuées varie en fonction des différentes options de configuration au niveau de la base de données et du serveur.

Le message d’erreur 824 indique généralement l’existence d’un problème au niveau du système de stockage sous-jacent, du matériel ou d’un pilote qui se trouve dans le chemin de la demande d’E/S. Vous pouvez rencontrer cette erreur en cas d’incohérences dans le système de fichiers ou si le fichier de base de données est endommagé.

Résolution

Si vous rencontrez l’erreur 824, vous pouvez essayer les solutions suivantes :

  • Examinez la table suspect_pages dans msdb pour vérifier si d’autres pages (dans la même base de données ou dans d’autres bases de données) rencontrent ce problème.

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • Vérifiez la cohérence des bases de données situées sur le même volume (celui indiqué dans le message 824) à l’aide de la commande DBCC CHECKDB. Si vous trouvez des incohérences à partir de la commande DBCC CHECKDB, aidez-vous des conseils fournis dans l’article de la Base de connaissances Comment résoudre les erreurs de cohérence de base de données signalées par DBCC CHECKB.

    DBCC CHECKDB;
    
  • Si la base de données qui rencontre ces erreurs 824 n’a pas l’option de base de données PAGE_VERIFY CHECKSUM activée, activez-la immédiatement. Les erreurs 824 peuvent se produire pour d’autres raisons qu’une erreur de somme de contrôle, mais CHECKSUM offre la meilleure option pour vérifier la cohérence de la page après qu’elle a été écrite sur le disque. Utilisez ce script pour identifier les bases de données où l’option CHECKSUM n’est pas activée :

    SELECT * FROM sys.databases
    WHERE page_verify_option_desc != 'CHECKSUM';
    
  • Vérifiez si les journaux des événements Windows contiennent des erreurs ou des messages signalés par le système d’exploitation, un dispositif de stockage ou un pilote de périphérique. S’ils sont liés à cette erreur d’une manière ou d’une autre, vous devez d’abord corriger ces erreurs. Par exemple, outre le message 824, vous pouvez également remarquer la présence d’un événement de type « Le pilote a détecté une erreur de contrôleur sur \Device\Harddisk4\DR4 » signalé par la source Disque dans le journal des événements. Dans ce cas, vous devez déterminer si ce fichier est présent sur ce dispositif, puis commencez par corriger ces erreurs de disque.

  • Utilisez l’utilitaire SQLIOSim pour déterminer si ces erreurs 824 peuvent être reproduites en dehors des demandes d’E/S normales de SQL Server. SQLIOSim est livré avec SQL Server 2008 (10.0.x) et les versions ultérieures, il n’y a donc pas besoin d’un téléchargement séparé.

  • Vérifiez auprès du fournisseur de matériel ou du fabricant de l’appareil que :

    • Les dispositifs matériels et la configuration sont conformes aux conditions d’E/S de SQL Server.
    • Les pilotes de périphérique et les autres composants logiciels de prise en charge de tous les appareils situés dans le chemin d’E/S sont à jour.
  • Si le fournisseur de matériel ou le fabricant de l’appareil vous a fourni des utilitaires de diagnostic, utilisez-les pour évaluer l’intégrité du système d’E/S.

  • Déterminez s’il existe des pilotes de filtre sur le chemin d’E/S de ces requêtes. Vous pouvez exécuter les commandes suivantes pour lister tous les pilotes de filtre sur le système :

    fltmc filters
    fltmc instances
    
    • Exclure la base de données et les fichiers journaux d’être analysés par ces pilotes de filtre. Pour plus d’informations, consultez Répertoires et extensions de noms de fichiers à exclure de l’analyse de virus
    • Vérifiez s’il existe des mises à jour pour ces pilotes de filtre
    • Ces pilotes de filtre peuvent-ils être supprimés ou désactivés pour observer si le problème qui entraîne l’erreur 824 disparaît ?
  • Si vous exécutez une machine virtuelle, assurez-vous que tous les pilotes de virtualisation sont mis à jour ou consultez le fournisseur de virtualisation pour plus d’informations.

  • S'il ne s'agit pas d'un problème de matériel et qu'une sauvegarde saine est disponible, restaurez la base de données à partir de cette sauvegarde.