Partage 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 de mémoire incorrecte 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 de mémoire endommagées qui ne sont pas modifiées et enregistre 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 utilisateur

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.

Plus d’informations

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 de mémoire incorrecte à l’aide de l’ensemble 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. Au 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 prend des mesures lorsque SQL Server reçoit ces notifications. Lorsqu’il reçoit une notification, SQL Server doit itérer dans 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 de mémoire de retour de la page de données est marquée comme 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 actuellement pas modifié ou ne traite pas les E/S, SQL Server peut ignorer et annuler la page de données. Ensuite, SQL Server enregistre 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 incorrecte n’est pas utilisée par le pool de mémoires tampons, mais par un autre objet ou structure mis en cache, SQL Server enregistre 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 pour empêcher SQL Server de s’inscrire auprès du système d’exploitation pour les notifications d’erreurs de mémoire. Toutefois, n’oubliez pas que l’activation de l’indicateur de trace 849 empêche SQL Server de recevoir des notifications de mémoire incorrectes 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 savoir que lorsque SQL Server s’inscrit pour ces notifications d’erreurs de mémoire, le processus système d’enregistreur différé n’effectue pas de vérifications de page 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.