MSSQLSERVER_824

Aplica-se a: SQL Server

Detalhes

Atributo Valor
Nome do produto SQL Server
ID do evento 824
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico B_HARDSSERR
Texto da mensagem O SQL Server detectou um erro de E/S baseado em consistência lógica: %ls. Isso aconteceu durante um %S_MSG da página %S_PGID na ID de banco de dados %d no deslocamento %#016I64x no arquivo '%ls'. Mensagens adicionais no log de erros do SQL Server ou do sistema operacional poderão fornecer mais detalhes. Este é um erro grave que ameaça a integridade do banco de dados e deve ser corrigido imediatamente. Execute uma verificação de consistência completa do banco de dados (DBCC CHECKDB). Esse erro pode ter sido causado por vários fatores. Para obter mais informações, consulte https://go.microsoft.com/fwlink/?linkid=2252374.

Sintoma

Você poderá encontrar a seguinte mensagem de erro no log de erros do SQL Server ou no log de eventos do Aplicativo do Windows se uma verificação de consistência lógica falhar após ler ou gravar uma página do banco de dados:

2022-11-02 15:46:42.90 spid51      Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51      SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see https://go.microsoft.com/fwlink/?linkid=2252374.

Se uma consulta SELECT ou DML for executada nessa mensagem, a mensagem de erro será retornada ao aplicativo, e a conexão com o banco de dados será encerrada.

Causa

Esse erro indica que o Windows informa que a página foi lida com êxito no disco, mas o SQL Server descobriu algo errado com a página. Esse erro é semelhante ao Erro 823, exceto pelo fato de o Windows não ter detectado o erro. Erro 824 normalmente indica um problema no subsistema de E/S, como uma unidade de disco deficiente, problemas de firmware, driver de dispositivo defeituoso e assim por diante. Para obter mais informações sobre erros de E/S, consulte Microsoft SQL Server I/O Basics, Chapter 2 (Noções básicas de E/S do Microsoft SQL Server, Capítulo 2).

O SQL Server usa as seguintes APIs do Windows para executar as operações de E/S: ReadFile, WriteFile, ReadFileScatter e WriteFileGather. Depois de concluir essas operações de E/S, o SQL Server verifica se há condições de erro associadas a essas chamadas à API. Se as chamadas à API falharem com um erro do sistema operacional, o SQL Server relatará o Erro 823. Pode haver situações em que a chamada à API do Windows foi bem-sucedida, mas os dados transferidos pela operação de E/S podem ter encontrado um problema de consistência lógica. Esses problemas de consistência lógica são relatados pelo Erro 824.

O erro 824 contém as seguintes informações:

  • O arquivo de banco de dados no qual a operação de E/S é executada
  • O deslocamento no arquivo em que ocorreu a tentativa de realização da operação de E/S
  • O banco de dados ao qual o arquivo pertence
  • O número da página que estava envolvida na operação de E/S
  • Se a operação era de leitura ou de gravação
  • Detalhes sobre a verificação de consistência lógica que falhou (o tipo de verificação, valor real e valor esperado usado para esta verificação)

Essas verificações de consistência lógica são verificações de integridade realizadas pelo SQL Server para garantir que os elementos-chave dos dados envolvidos na transferência de E/S permaneçam intactos durante toda a operação de E/S. As verificações incluem soma de verificação, página interrompida, transferência curta, ID de página incorreta, leitura obsoleta, falha de auditoria de página. A natureza das verificações realizadas varia dependendo das diferentes opções de configuração no nível do banco de dados e do servidor.

A mensagem de erro 824 geralmente indica que há um problema com o sistema de armazenamento subjacente, o hardware ou um driver que está no caminho da solicitação de E/S. Você poderá encontrar esse erro quando houver inconsistências no sistema de arquivos ou se o arquivo de banco de dados estiver danificado.

Resolução

Se encontrar o erro 824, você poderá tentar as seguintes resoluções:

  • Examine a tabela suspect_pages no msdb para verificar se outras páginas (no mesmo banco de dados ou em bancos de dados diferentes) estão encontrando esse problema.

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • Verifique a consistência dos bancos de dados localizados no mesmo volume (que o relatado na mensagem 824) usando o comando DBCC CHECKDB. Se você encontrar inconsistências do comando DBCC CHECKDB, use as diretrizes do artigo da base de dados de conhecimento Como solucionar problemas de consistência do banco de dados relatados pelo DBCC CHECKDB.

    DBCC CHECKDB;
    
  • Se o banco de dados que encontrar esses erros 824 não tiver a opção de banco de dados PAGE_VERIFY CHECKSUM ativada, ative-a imediatamente. Erros 824 podem ocorrer por outros motivos além de uma falha de soma de verificação, mas CHECKSUM fornece a melhor opção para verificar a consistência da página depois que ela foi gravada no disco. Use esse script para identificar bancos de dados onde a opção CHECKSUM não está habilitada:

    SELECT * FROM sys.databases
    WHERE page_verify_option_desc != 'CHECKSUM';
    
  • Examine os logs de eventos do Windows para verificar se há erros ou mensagens relatadas pelo sistema operacional, um dispositivo de armazenamento ou um driver de dispositivo. Se eles estiverem relacionados a esse erro de alguma maneira, você deve resolver esses erros primeiro. Por exemplo, além da mensagem 824, você também poderá observar um evento como "O driver detectou um erro de controlador em \Device\Harddisk4\DR4" relatado pela origem do disco no log de eventos. Nesse caso, você precisará avaliar se esse arquivo está presente neste dispositivo e corrigir os erros de disco primeiro.

  • Use o utilitário SQLIOSim para descobrir se esses erros 824 poderão ser reproduzidos fora das solicitações regulares de E/S do SQL Server. O SQLIOSim é fornecido com o SQL Server 2008 (10.0.x) e versões posteriores, portanto, não há necessidade de um download separado.

  • Trabalhe com o fabricante do dispositivo ou fornecedor de hardware para garantir que:

    • Os dispositivos de hardware e a configuração estejam em conformidade com os requisitos de E/S do SQL Server.
    • Os drivers de dispositivo e outros componentes de software de suporte de todos os dispositivos no caminho de E/S estejam atualizados.
  • Se o fabricante do dispositivo ou fornecedor de hardware fornecer a você utilitários de diagnóstico, use-os para avaliar a integridade do sistema de E/S.

  • Avalie se há drivers de filtro existentes no caminho de E/S dessas solicitações. Você pode executar os seguintes comandos para listar todos os drivers de filtro no sistema:

    fltmc filters
    fltmc instances
    
  • Se estiver executando uma máquina virtual, verifique se todos os drivers de virtualização estão atualizados ou consulte o fornecedor de virtualização para obter mais informações.

  • Se o problema não estiver relacionado ao hardware e se houver um backup limpo conhecido, restaure o banco de dados do backup.