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 due à de nombreux facteurs ; pour plus d’informations, consultez 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 retourné à l’application et la connexion de base de données est arrêtée.

Cause

Cette erreur indique que Windows signale que la page est correctement lue à partir du disque, mais SQL Server a découvert un problème avec la page. Cette erreur est similaire à l’erreur 823, sauf que Windows n’a pas détecté l’erreur. L’erreur 824 indique généralement un problème dans le sous-système d’E/S, comme les lecteurs de disque défaillants, les problèmes de microprogramme, les 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, , WriteFileReadFileScatteret WriteFileGather. Une fois ces opérations d’E/S terminées, SQL Server case activée pour toutes les conditions d’erreur associées à ces appels d’API. Si ces appels d’API échouent avec une erreur de système d’exploitation, SQL Server signale l’erreur 823. Il peut y avoir des situations où l’appel d’API Windows réussit réellement, mais les données transférées par l’opération d’E/S peuvent avoir 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 cohérence logique case activée ayant échoué (type de case activée, valeur réelle et valeur attendue utilisée pour cette case activée)

Ces case activée de cohérence logique sont des case activée d’intégrité effectuées par SQL Server pour garantir que les éléments clés des données impliquées dans le transfert d’E/S restent intacts tout au long de l’opération d’E/S. Les case activée incluent la somme de contrôle, la page déchirée, le transfert court, l’ID de page incorrect, la lecture obsolète et l’échec d’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 qu’il existe un problème avec le système de stockage sous-jacent ou le matériel ou un pilote qui se trouve dans le chemin d’accès de la requête 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 :

  • Passez en revue la table suspect_pages dans msdb case activée si d’autres pages (dans la même base de données ou différentes 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 dans le même volume (comme celui signalé dans le message 824) à l’aide de la commande DBCC CHECKDB. Si vous trouvez des incohérences dans la DBCC CHECKDB commande, utilisez les instructions de l’article De la Base de connaissances Comment résoudre les erreurs de cohérence de base de données signalées par DBCC CHECKDB.

    DBCC CHECKDB;
    
  • Si la base de données qui rencontre ces 824 erreurs n’a pas l’option PAGE_VERIFY CHECKSUM de base de données activée, activez l’option 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 certaine manière, vous devez d’abord résoudre ces erreurs. Par exemple, en dehors du message 824, vous remarquerez peut-être également un événement tel que « Le pilote a détecté une erreur de contrôleur sur \Device\Harddisk4\DR4 » signalé par la source de 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 fourni avec SQL Server 2008 (10.0.x) et versions ultérieures. Il n’est donc pas nécessaire de télécharger séparément.

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

  • 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.

  • Évaluez s’il existe des pilotes de filtre qui existent sur le chemin d’E/S de ces requêtes. Vous pouvez exécuter les commandes suivantes pour répertorier tous les pilotes de filtre sur le système :

    fltmc filters
    fltmc instances
    
    • Excluez 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 nom de fichier à exclure de l’analyse antivirus
    • 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, vérifiez que tous les pilotes de virtualisation sont mis à jour ou case activée avec le fournisseur de virtualisation pour plus d’informations.

  • Si le problème n’est pas lié au matériel et qu’une sauvegarde propre connue est disponible, restaurez la base de données à partir de la sauvegarde.