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
- Exclua os arquivos de banco de dados e de log da varredura por esses drivers de filtro. Para obter mais informações, consulte Diretórios e extensões de nome de arquivo a serem excluídos da verificação de vírus
- Verifique se há atualizações para esses drivers de filtro
- Esses drivers de filtro podem ser removidos ou desabilitados para observar se o problema que resulta no erro 824 desaparece?
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.