MSSQLSERVER_855MSSQLSERVER_855

Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions) Aplica-se a:Applies to: simSQL ServerSQL Server (todas as versões compatíveis) yesSQL ServerSQL Server (all supported versions)

DetalhesDetails

AtributoAttribute ValorValue
Nome do ProdutoProduct Name SQL ServerSQL Server
ID do eventoEvent ID 855855
Origem do EventoEvent Source MSSQLSERVERMSSQLSERVER
ComponenteComponent SQLEngineSQLEngine
Nome simbólicoSymbolic Name BAD_MEMORY_OUTSIDE_BPOOLBAD_MEMORY_OUTSIDE_BPOOL
Texto da mensagemMessage Text Foi detectada uma corrupção de memória de hardware incorrigível.Uncorrectable hardware memory corruption detected. O sistema pode se tornar instável.Your system may become unstable. Verifique o log de eventos do Windows para obter mais detalhesCheck the Windows event log for more details

ExplicaçãoExplanation

Essa mensagem indica que o SQL ServerSQL Server detectou uma página de memória inválida em um objeto armazenado em cache fora do pool de buffers.This message indicates SQL ServerSQL Server detected a bad memory page in a cached object outside of the buffer pool. Ela é gerada em sistemas que dão suporte à capacidade de recuperação de erros de memória.This message is raised on systems that supports the ability to recover from memory errors. O SQL ServerSQL Server não consegue se recuperar desses cenários e registra essa mensagem em log.SQL ServerSQL Server is unable to recover from these scenarios and logs this message.

Ação do usuárioUser action

Você deve executar verificações de hardware ou do sistema para determinar se há problemas de memória ou de CPU.You should run hardware or system checks to determine if a memory or CPU problems exists. Verifique se todas as atualizações do sistema operacional e de hardware, bem como todos os drivers do sistema, foram aplicados ao sistema.Ensure all system drivers, Operating system updates, and hardware updates have been applied to your system. Considere a possibilidade de executar diagnósticos de fabricação de hardware, incluindo testes relacionados à memória.Consider running any hardware manufacture diagnostics including memory related tests. Sempre que você receber esse erro, considere a possibilidade de executar o DBCC CHECKDB em todos os bancos de dados dessa instância.Anytime you see this error, consider running DBCC CHECKDB against all databases in this instance.

Mais informaçõesMore information

Em computadores com um hardware mais recente e que executem o Windows Server 2012 ou uma versão posterior, o hardware pode notificar o sistema operacional e os aplicativos de que as páginas de memória (páginas do sistema operacional) estão marcadas como inválidas ou danificadas.On computers that have newer hardware and are running Windows Server 2012 or a later version, the hardware can notify the operating system and applications that memory pages (operating system pages) are marked as bad or damaged. Aplicativos como o SQL ServerSQL Server podem registrar essas notificações de páginas de memória inválidas usando o seguinte conjunto de APIs:Applications such as SQL ServerSQL Server can register these bad memory page notifications by using the following API set:

  • GetMemoryErrorHandlingCapabilities
  • RegisterBadMemoryNotification
  • BadMemoryCallbackRoutine

O SQL ServerSQL Server adiciona suporte para essas notificações no Microsoft SQL Server 2012 (11.x)SQL Server 2012 (11.x) e versões posteriores.SQL ServerSQL Server adds support for these notifications in Microsoft SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later versions. Durante a inicialização do SQL ServerSQL Server, o SQL ServerSQL Server verifica se o hardware dá suporte a esse novo recurso.During SQL ServerSQL Server startup, SQL ServerSQL Server checks whether the hardware supports this new feature. Além disso, você receberá a seguinte mensagem no log de erros:Additionally, you receive the following message in the error log:

<Datetime> O Computador do Servidor dá suporte à recuperação de erros de memória.<Datetime> Server Machine supports memory error recovery. A proteção de memória do SQL está habilitada para a recuperação de corrupção de memória.SQL memory protection is enabled to recover from memory corruption.

Atualmente, somente o pool de buffers executa uma ação quando o SQL ServerSQL Server recebe essas notificações.Currently, only the buffer pool takes action when SQL ServerSQL Server receives these notifications. Quando ele recebe uma notificação, o SQL ServerSQL Server precisa iterar em todo o pool de buffers e descobrir o endereço de cada buffer alocado.When it receives a notification, SQL ServerSQL Server has to iterate through the whole buffer pool and discover the address for each allocated buffer. Em seguida, o SQL ServerSQL Server usa a API QueryWorkingSetEX para verificar se as páginas de memória que dão suporte à página de dados estão marcadas como inválidas.Then, SQL ServerSQL Server uses the QueryWorkingSetEX API to check whether any of the memory pages that back the data page is marked as bad. A estrutura de saída PSAPI_WORKING_SET_EX_BLOCK que corresponde a essa página de memória terá o membro inválido definido como 1 se houver algum dano relatado.The PSAPI_WORKING_SET_EX_BLOCK output structure that corresponds to this memory page will have its member bad set to 1 if there is any damaged reported.

Se essa página de dados ou esse pool de buffers não estiver alterado no momento ou não estiver processando a E/S, o SQL ServerSQL Server poderá descartar e cancelar a confirmação da página de dados.If that buffer pool or data page is currently not changed or not processing I/O, SQL ServerSQL Server can discard and de-commit the data page. Em seguida, o SQL ServerSQL Server registrará em log a seguinte mensagem:Then, SQL ServerSQL Server logs the following message:

O SQL Server detectou uma corrupção de memória de hardware no banco de dados '%ls', ID de arquivo: %u, ID de página: %u, endereço de memória: 0x%I64x e recuperou a página com êxito.SQL Server has detected hardware memory corruption in database '%ls', file ID: %u, page ID; %u, memory address: 0x%I64x and has successfully recovered the page.

Quando as consultas exigirem essa página de dados novamente, o pool de buffers poderá ler a página de dados do disco e levar o conteúdo mais uma vez para o pool de buffers.When queries require that data page again, the buffer pool can read the data page back from disk and bring the contents back to the buffer pool. Também é possível que a versão em disco da página esteja em um estado danificado.It is also possible for the on-disk version of the page to be in a damaged state. Nesse caso, o SQL ServerSQL Server poderá registrar em log erros adicionais, como o erro 824.In that case, SQL ServerSQL Server may log additional errors such as error 824.

Se a página inválida for usada não pelo pool de buffers, mas por outra estrutura ou outro objeto armazenado em cache, o SQL ServerSQL Server registrará em log a seguinte mensagem:If the bad page is used not by the buffer pool but by some other cached object or structure, SQL ServerSQL Server logs the following message:

Foi detectada uma corrupção de memória de hardware incorrigível.Uncorrectable hardware memory corruption detected. O sistema pode se tornar instável.Your system may become unstable. Verifique o log de eventos do Windows para obter mais detalhes.Please check the Windows event log for more details.

Se o servidor estiver relatando erros de memória, você deverá entrar em contato com o fornecedor do hardware do computador e executar as ações apropriadas, como executar o diagnóstico de memória, atualizar o BIOS e o firmware e substituir os módulos de memória inválidos.If the server is reporting memory errors, you should contact the computer hardware vendor and perform appropriate actions such as performing memory diagnostics, updating BIOS and firmware, and replacing bad memory modules.

Use o sinalizador de rastreamento 849 do SQL ServerSQL Server para impedir que o SQL ServerSQL Server se registre no sistema operacional para receber notificações de erros de memória.You can use SQL ServerSQL Server trace flag 849 to keep SQL ServerSQL Server from registering with the operating system for memory error notifications. No entanto, lembre-se de que a habilitação o sinalizador de rastreamento 849 impedirá o SQL ServerSQL Server de receber notificações de memória inválida do sistema operacional.However, be aware that enabling trace flag 849 will prevent SQL ServerSQL Server from receiving bad memory notifications from operating system. Portanto, não recomendamos que você use esse sinalizador de rastreamento em circunstâncias típicas.Therefore, we do not recommend that you use this trace flag under typical circumstances.

Além disso, lembre-se de que, por padrão, o SQL ServerSQL Server receberá essas notificações em um hardware compatível.Also, be aware that, by default, SQL ServerSQL Server will receive these notifications on supported hardware.

Esteja ciente também de que, quando o SQL ServerSQL Server se registra para receber essas notificações de erros de memória, o processo do sistema de gravador lento não executa verificações de páginas constantes.You should also be aware that when SQL ServerSQL Server registers for these memory error notifications, the lazy writer system process does not perform constant page checks. Para obter mais informações sobre verificações de páginas constantes, confira Como solucionar a Mensagem 832 (página constante alterada) no SQL Server.For more information about constant page checks, see How to troubleshoot Msg 832 (constant page has changed) in SQL Server.