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, telles que ReadFile, WriteFile, ReadFileScatter et WriteFileGather, pour effectuer des opérations d’E/S de fichier. 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 de 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. Ce décalage est le décalage d’octets physiques du 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.

Erreurs générées par le système d’exploitation

Une erreur de système d’exploitation se produit lorsqu’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.
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.

Erreurs générées par DBCC CHECKDB

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 lorsque vous voyez une erreur 823. Si l’instruction DBCC CHECKDB ne signale aucune erreur, vous rencontrez probablement un problème système intermittent ou un problème de disque.

Vous pouvez voir plus d’informations de diagnostic pour les erreurs 823 dans le fichier journal des erreurs SQL Server à l’aide de 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 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é. Pour une lecture de fichier, SQL Server retente 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 msdbsuspect_pages dans les autres pages qui rencontrent ce problème (dans la même base de données ou différentes bases de données).

  • Vérifiez la cohérence des bases de données situées sur le même volume (que celui signalé dans le message 823) à l’aide de la DBCC CHECKDB commande. Si vous trouvez des incohérences à partir de la DBCC CHECKDB commande, suivez les instructions de la section Guide pratique pour résoudre les erreurs de cohérence de base de données signalées par DBCC CHECKB.

  • Passez en revue les journaux des événements Windows pour les erreurs ou messages signalés à partir du système d’exploitation, d’un périphérique de stockage ou d’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 évaluer si ce fichier est présent sur cet appareil, puis corriger ces erreurs de disque.

  • Utilisez l’utilitaire SQLIOSim pour déterminer si ces erreurs 823 peuvent être reproduites en dehors des requêtes d’E/S SQL Server standard. 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 périphériques matériels et la configuration sont conformes aux exigences d’E/S de SQL Server.
    • Les pilotes de périphérique et d’autres composants logiciels de prise en charge de tous les appareils du chemin d’E/S sont à jour.
  • Si le fabricant de matériel ou d’appareil vous a fourni des utilitaires de diagnostic, utilisez-les 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 de ces pilotes de filtre.

    • Pouvez-vous supprimer ou désactiver ces pilotes de filtre pour observer si le problème qui entraîne l’erreur 823 disparaît ?

Exemple avec l’erreur de système d’exploitation 21

Dans ce cas, l’erreur de système d’exploitation sous-jacente 21 indique que l’appareil disque est hors connexion et n’est pas disponible pour le système d’exploitation et SQL Server à utiliser.

Error: 823, Severity: 24, State: 2.
The operating system returned error 21 (The device is not ready.) 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.

Résolution

Si vous rencontrez un scénario similaire, résolvez l’erreur de système d’exploitation sous-jacente. Dans ce cas, collaborez avec votre administrateur système et votre fournisseur de matériel pour vous assurer que l’appareil disque est en ligne et fonctionne correctement. Assurez-vous qu’il n’y a pas d’erreurs ou de dommages signalés.

Une connexion réseau instable peut également entraîner cette erreur, par exemple lorsque les fichiers de base de données sont stockés sur un stockage NAS (Network-attached Storage) ou un périphérique SAN accessible sur le réseau. Dans les cas comme celui-ci, vous devrez peut-être vérifier l’intégrité physique des bases de données une fois que l’appareil disque est restauré en exécutant DBCC CHECKDB. Si des dommages de base de données sont signalés, restaurez une dernière sauvegarde de base de données correcte connue.