Partager via


Erreur 823 de MSSQLSERVER

S'applique à :SQL Server

Détails

Attribut Valeur
Nom du produit Serveur SQL
ID de l’événement 823
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique B_HARDERR
Texte du message Le système d'exploitation a retourné l'erreur %ls à SQL Server pendant une opération de %S_MSG au niveau du décalage %#016I64x dans le fichier '%ls'. D'autres messages peuvent fournir davantage d'informations dans le journal des erreurs SQL Server et le journal des événements système. Il s'agit d'une condition d'erreur sévère de niveau système qui met en péril l'intégrité de la base de données et qui 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 avoir de nombreuses causes ; pour plus d'informations, consultez la documentation en ligne de SQL Server.

Explication

SQL Server utilise des API Windows (par exemple, ReadFile, WriteFile, ReadFileScatter, WriteFileGather) pour effectuer des opérations d’E/S de fichiers. Une fois que SQL Server effectue ces opérations d’E/S, il vérifie les conditions d’erreur associées à ces appels d’API. Si les appels d’API échouent avec une erreur du système d’exploitation, SQL Server signale l’erreur 823.

Le message d’erreur 823 contient les indications suivantes :

  • Fichier de base de données sur lequel l’opération d’E/S a été effectuée.
  • Décalage au sein du fichier où l’opération d’E/S a été tentée. Il s’agit du décalage de fichier physique par rapport au début du fichier. La division de ce nombre par 8 192 vous donne le numéro de page logique affecté par l’erreur.
  • Indique si l’opération d’E/S est une demande de lecture ou d’écriture.
  • Code d’erreur du système d’exploitation et description d’erreur entre parenthèses.

Erreur du système d’exploitation : Un appel d’API Windows en lecture ou en écriture n’est pas réussi et SQL Server rencontre une erreur de système d’exploitation liée à l’appel d’API Windows. Le message suivant est un exemple d’erreur 823 :

Error: 823, Severity: 24, State: 2.
2010-03-06 22:41:19.55 spid58 The operating system returned error 1117 (The request could not be performed because of an I/O device error.) to SQL Server during a read at offset 0x0000002d460000 in file 'e:\program files\Microsoft SQL Server\mssql\data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Vous pouvez voir des erreurs de l’instruction DBCC CHECKDB sur la base de données associée au fichier dans le message d’erreur. Vous pouvez exécuter l’instruction DBCC CHECKDB quand vous voyez une erreur 823. Si l’instruction DBCC CHECKDB ne signale aucune erreur, vous avez probablement un problème système intermittent ou un problème de disque.

Des informations de diagnostic supplémentaires pour les erreurs 823 peuvent être écrites dans le fichier journal des erreurs SQL Server lorsque vous utilisez l’indicateur de trace 818. Pour plus d’informations, consultez diagnostics SQL Server détecte les problèmes d’E/S non signalés en raison de lectures obsolètes ou d’écritures perdues.

La cause

Le message d’erreur 823 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 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é. Pour une lecture de fichier, SQL Server a déjà retenté la demande de lecture quatre fois avant de renvoyer 823. Si l’opération de nouvelle tentative réussit, la requête ne échoue pas, mais le message MSSQLSERVER_825 est écrit dans le journal des événements et ERRORLOG.

Action de l’utilisateur

  • Passez en revue la table suspect_pages dans msdb laquelle se trouvent d’autres pages qui rencontrent ce problème (dans la même base de données ou dans différentes bases de données).

  • Vérifiez la cohérence des bases de données situées sur le même volume (celui indiqué dans le message 823) à 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 Comment résoudre les erreurs de cohérence de base de données signalées par DBCC CHECKB.

  • 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, résolvez d’abord ces erreurs. Par exemple, en dehors du message 823, 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 Utiliser SQLIOSim pour simuler l’activité SQL Server sur un utilitaire de sous-système de disque pour déterminer si ces 823 erreurs peuvent être reproduites en dehors des demandes d’E/S SQL Server régulières. L’utilitaire SQLIOSim est fourni avec SQL Server 2008 et versions ultérieures afin qu’il n’y ait pas besoin d’un téléchargement distinct. Il se trouve généralement dans le dossier C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn.

  • Collaborez avec votre fournisseur de matériel ou votre fabricant d’appareils pour vous assurer

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

  • Déterminez si le chemin de ces demandes d’E/S contient des pilotes de filtre sujets à des problèmes.

    • 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 823 disparaît ?