Partager via


MSSQLSERVER_856

S’applique à :SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 856
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique BAD_MEMORY_CLEAN_DATABASE_PAGE
Texte du message SQL Server a détecté une altération de la mémoire matérielle dans la base de données '%ls', ID de fichier : %u, ID de page : %u, adresse mémoire : 0x%I64X et a correctement récupéré la page

Explication

Ce message indique que SQL Server a détecté une page mémoire erronée dans un objet mis en cache en dehors du pool de mémoires tampons. Ce message est généré sur les systèmes qui prennent en charge la capacité à récupérer suite à des erreurs de mémoire. SQL Server corrige ces erreurs de mémoire en ignorant les pages mémoire endommagées qui ne sont pas modifiées et consigne ce message d’erreur. Si la page mémoire endommagée a été modifiée (est erronée), l’erreur 824 est déclenchée (MSSQLSERVER_824)

Action requise

Vous devez exécuter des vérifications matérielles ou système pour déterminer s’il existe des problèmes de mémoire ou de processeur. Vérifiez que tous les pilotes système, les mises à jour du système d’exploitation et les mises à jour matérielles ont été appliqués à votre système. Envisagez d’exécuter des diagnostics de fabrication de matériel, y compris des tests liés à la mémoire. Chaque fois que vous voyez cette erreur, envisagez d’exécuter DBCC CHECKDB sur toutes les bases de données de cette instance.

Informations complémentaires

Sur les ordinateurs équipés de matériel plus récent et exécutant Windows Server 2012 ou ultérieur, le matériel peut informer le système d’exploitation et les applications que les pages mémoire (pages du système d’exploitation) sont marquées comme étant incorrectes ou endommagées. Les applications telles que SQL Server peuvent inscrire ces notifications de page mémoire erronée à l’aide du jeu d’API suivant :

  • GetMemoryErrorHandlingCapabilities
  • RegisterBadMemoryNotification
  • BadMemoryCallbackRoutine

SQL Server ajoute la prise en charge de ces notifications dans Microsoft SQL Server 2012 (11.x) et versions ultérieures. Lors du démarrage de SQL Server, SQL Server vérifie si le matériel prend en charge cette nouvelle fonctionnalité. Vous verrez également le message suivant dans le journal des erreurs :

<Datetime> Server Machine prend en charge la récupération d’erreurs de mémoire. La protection de la mémoire SQL est activée pour la récupération suite à une altération de la mémoire.

Actuellement, seul le pool de mémoires tampons entreprend une action quand SQL Server reçoit ces notifications. Lorsqu’il reçoit une notification, SQL Server doit parcourir l’ensemble du pool de mémoires tampons et découvrir l’adresse de chaque mémoire tampon allouée. Ensuite, SQL Server utilise l’API QueryWorkingSetEX pour vérifier si l’une des pages mémoire associées à la page de données est marquée comme étant incorrecte. La structure de sortie PSAPI_WORKING_SET_EX_BLOCK qui correspond à cette page mémoire verra son membre incorrect avec la valeur 1 si un dommage quelconque est signalé.

Si ce pool de mémoires tampons ou cette page de données n’est pas modifié ni en train de traiter des E/S, SQL Server peut ignorer la page de données et en annuler la validation. Ensuite, SQL Server consigne le message suivant :

SQL Server a détecté une altération de la mémoire matérielle dans la base de données '%ls', ID de fichier : %u, ID de page : %u, adresse mémoire : 0x%I64X et a correctement récupéré la page.

Lorsque les requêtes nécessitent une nouvelle fois cette page de données, le pool de mémoires tampons peut lire la page de données à partir du disque et remettre le contenu dans le pool de mémoires tampons. Il est également possible que la version sur disque de la page se trouve dans un état endommagé. Dans ce cas, SQL Server peut consigner des erreurs supplémentaires telles que l’erreur 824.

Si la page erronée est utilisée non pas par le pool de mémoires tampons mais par une autre structure ou un autre objet mis en cache, SQL Server consigne le message suivant :

Altération de la mémoire matérielle non corrigeable détectée. Votre système peut devenir instable. Pour plus d’informations, consultez le journal des événements Windows.

Si le serveur signale des erreurs de mémoire, contactez le fournisseur du matériel informatique et effectuez les actions appropriées, telles que l’exécution de diagnostics de la mémoire, la mise à jour du BIOS et du microprogramme ainsi que le remplacement des modules de mémoire défectueux.

Vous pouvez utiliser l’indicateur de trace SQL Server 849 afin d’empêcher SQL Server de s’inscrire auprès du système d’exploitation pour recevoir les notifications d’erreur de mémoire. Toutefois, sachez que l’activation de l’indicateur de trace 849 empêchera SQL Server de recevoir des notifications de mémoire incorrecte du système d’exploitation. Par conséquent, nous vous déconseillons d’utiliser cet indicateur de trace dans des circonstances classiques.

Sachez également que, par défaut, SQL Server recevra ces notifications sur le matériel pris en charge.

Vous devez également garder à l’esprit que, quand SQL Server s’inscrit pour recevoir ces notifications d’erreur de mémoire, le processus système d’écriture différée n’effectue pas de vérifications de pages constantes. Pour plus d’informations sur les vérifications de pages constantes, consultez Guide pratique pour résoudre les problèmes liés au message 832 (changement d’une page constante) dans SQL Server.