MSSQLSERVER_832
Aplica-se: SQL Server
Detalhes
Atributo | Valor |
---|---|
Nome do produto | SQL Server |
ID do evento | 832 |
Origem do Evento | MSSQLSERVER |
Componente | SQLEngine |
Nome simbólico | B_CONSTPAGECHANGED |
Texto da mensagem | Uma página que deveria ter sido constante foi alterada (soma de verificação esperada: <valor> esperado, soma de verificação real: <valor> real, dbid> do banco de dados<, arquivo '<nome> do arquivo', página <pageno>). Geralmente, isso indica falha na memória ou outro dano no hardware ou no sistema operacional. |
Explicação
Um fator externo fez com que uma página de banco de dados fosse modificada fora do código normal do mecanismo do SQL Server usado para alterar as páginas do banco de dados. As condições podem ser:
- Um thread em execução no processo do SQL Server que grava incorretamente em uma página de banco de dados. Isso costuma ser chamado de "scribbler"
- Um problema de hardware ou sistema operacional em que a memória que fez backup da página de banco de dados está incorreta, foi modificada ou danificada
Quando o SQL Server detecta esse comportamento, o erro 832 é gerado.
Ação do usuário
Para encontrar a causa do erro, considere o uso destas opções:
- Você deve executar as verificações normais de hardware ou do sistema para determinar se há um problema de memória, CPU ou outro relacionado ao hardware. Verifique se todas as atualizações do sistema operacional e de hardware, bem como todos os drivers do sistema, foram aplicados ao sistema. Considere a possibilidade de executar diagnósticos de fabricação de hardware, incluindo testes relacionados à memória.
- Avalie quais DLLs "externas" podem ser carregadas no SQL Server que podem causar esse problema, incluindo procedimentos armazenados estendidos, objetos COM ou outras DLLs que podem estar modificando incorretamente a memória do SQL Server reservada para páginas de banco de dados.
Sempre que você vir esse erro, considere imediatamente executar DBCC CHECKDB
no banco de dados referenciado <pelo dbid> na mensagem de erro.
Mais informações
Esse erro é detectado pela tarefa em segundo plano, geralmente chamada de LazyWriter. (O "comando" para essa tarefa é visto como LAZY WRITER). Portanto, esse erro não é retornado para um aplicativo cliente. O erro será gravado no Log de Eventos do Aplicativo do Windows como EventID = 832.
Somente as páginas que não estão atualmente modificadas no cache (ou "sujas") são verificadas. É por isso que a mensagem usa o termo "constante": porque a página nunca foi alterada desde que foi lida do disco. Além disso, a página foi lida como "limpa" do disco porque tem um valor de soma de verificação e não teve uma falha de soma de verificação (Mensagem 824). No entanto, a página podia ser modificada em algum ponto após esse erro e, em seguida, gravada em disco com a modificação incorreta. Se esse erro ocorrer, uma nova soma de verificação será calculada com base em todas as modificações antes de ela ser gravada em disco. Portanto, a página pode estar danificada em disco, mas uma leitura seguinte do disco pode não disparar uma falha de soma de verificação. É importante executar DBCC CHECKDB
em qualquer banco de dados referenciado por esse erro.
É possível que, até mesmo, DBCC CHECKDB
não relate um erro para uma página nesse estado depois de ela ser gravada em disco. Isso ocorre porque a modificação incorreta pode estar em locais da página que não contêm dados nem nenhuma informação importante de estrutura de página ou linha, ou elas podem ser modificações em dados que não podem ser detectados por CHECKDB.
Leia também mais detalhes e informações sobre a Mensagem 832 no white paper Fundamentos de E/S do SQL Server, Capítulo 2.