Compartilhar via


Erro MSSQLSERVER 823

Aplica-se:SQL Server

Detalhes

Atributo Valor
Nome do produto SQL Server
ID do evento 823
Origem do Evento MSSQLSERVER
Componente SQLEngine
Nome simbólico B_HARDERR
Texto da mensagem O sistema operacional retornou o erro %ls para o SQL Server durante um %S_MSG no deslocamento %#016I64x do arquivo '%ls'. Mensagens adicionais no log de erros do SQL Server e no log de eventos do sistema podem fornecer mais detalhes. Essa é uma condição de erro grave em nível de sistema que ameaça a integridade do banco de dados e deve ser corrigida 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 os Manuais Online do SQL Server.

Explicação

O SQL Server usa APIs do Windows, como ReadFile, WriteFile, ReadFileScatter e WriteFileGather, para executar operações de E/S de arquivo. Depois que o SQL Server executa essas operações de E/S, ele verifica se há condições de erro associadas a essas chamadas à API. Se as chamadas à API falharem com um erro do sistema operacional (SO), o SQL Server relatará o Erro 823.

A mensagem de erro 823 contém as seguintes informações:

  • O arquivo de banco de dados no qual a operação de E/S foi executada.

  • O deslocamento dentro do arquivo em que ocorreu a tentativa de realização da operação de E/S. Esse deslocamento é o deslocamento de bytes físico desde o início do arquivo. Dividir esse número por 8.192 fornece o número de página lógica que o erro afeta.

  • Se a operação de E/S é uma solicitação de leitura ou gravação.

  • O código de erro do sistema operacional e a descrição de erro entre parênteses.

Erros gerados pelo sistema operacional

Um erro do sistema operacional ocorre quando uma chamada de API do Windows de leitura ou gravação não é bem-sucedida e o SQL Server encontra um erro do sistema operacional relacionado à chamada à API do Windows. A seguinte mensagem é um exemplo de um erro 823:

Error: 823, Severity: 24, State: 2.
The operating system returned error 1117 (The request could not be performed because of an I/O device error.) to SQL Server during a read at offset 0x0000002d460000 in file 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Erros gerados pelo DBCC CHECKDB

Você pode ver erros da DBCC CHECKDB instrução no banco de dados associado ao arquivo na mensagem de erro. Você pode executar a DBCC CHECKDB instrução quando vir um erro 823. Se a DBCC CHECKDB instrução não relatar erros, você provavelmente terá um problema intermitente do sistema ou um problema de disco.

Você pode ver mais informações de diagnóstico para 823 erros no arquivo de log de erros do SQL Server usando o sinalizador de rastreamento 818. Para obter mais informações, consulte O diagnóstico do SQL Server detecta problemas de E/S não relatados devido a leituras obsoletas ou gravações perdidas.

Causa

A mensagem de erro 823 geralmente indica que há um problema com o sistema de armazenamento subjacente ou 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. Para uma leitura de arquivo, o SQL Server tenta novamente a solicitação de leitura quatro vezes antes de retornar 823. Se a operação de repetição for bem-sucedida, a consulta não falhará, mas a mensagem MSSQLSERVER_825 será gravada no ERRORLOG e no Log de Eventos.

Ação do usuário

  • Examine a tabela suspect_pages para msdb outras páginas que encontrarem esse problema (no mesmo banco de dados ou bancos de dados diferentes).

  • Verifique a consistência dos bancos de dados localizados no mesmo volume (como o relatado na mensagem 823) usando o DBCC CHECKDB comando. Se você encontrar inconsistências do DBCC CHECKDB comando, use as diretrizes de Como solucionar problemas de erros de consistência de banco de dados relatados pelo DBCC CHECKB.

  • Examine os logs de eventos do Windows em busca de erros ou mensagens relatadas do sistema operacional, de um dispositivo de armazenamento ou de um driver de dispositivo. Se eles estiverem relacionados a esse erro de alguma forma, resolva esses erros primeiro. Por exemplo, além da mensagem 823, você também pode notar um evento como "O driver detectou um erro do controlador em \Device\Harddisk4\DR4" relatado pela origem do disco no Log de Eventos. Nesse caso, você precisa avaliar se esse arquivo está presente neste dispositivo e, em seguida, corrigir esses erros de disco.

  • Use o utilitário SQLIOSim para descobrir se esses 823 erros podem ser reproduzidos fora das solicitações regulares de E/S do SQL Server. O utilitário SQLIOSim é fornecido com o SQL Server 2008 e versões posteriores para que não haja necessidade de um download separado. Normalmente, você pode encontrá-lo na pasta C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn.

  • Trabalhe com seu fornecedor de hardware ou fabricante de dispositivos para garantir:

    • Os dispositivos de hardware e a configuração estão 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 estão atualizados.
  • Se o fornecedor de hardware ou o fabricante do dispositivo tiver fornecido utilitários de diagnóstico, use-os para avaliar a integridade do sistema de E/S.

  • Avalie se há drivers de filtro no caminho dessas solicitações de E/S que encontram problemas.

    • Verifique se há atualizações nesses drivers de filtro.

    • Você pode remover ou desabilitar esses drivers de filtro para observar se o problema que resulta no erro 823 desaparecer?

Exemplo com o erro 21 do sistema operacional

Nesse caso, o erro 21 do sistema operacional subjacente indica que o dispositivo de disco está offline e não está disponível para o sistema operacional e o SQL Server usarem.

Error: 823, Severity: 24, State: 2.
The operating system returned error 21 (The device is not ready.) to SQL Server during a read at offset 0x0000002d460000 in file 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Resolução

Se você encontrar um cenário semelhante, resolva o erro do sistema operacional subjacente. Nesse caso, trabalhe com o administrador do sistema e o fornecedor de hardware para garantir que o dispositivo de disco esteja online e funcionando corretamente. Verifique se não há erros ou danos relatados.

Uma conexão de rede instável também pode causar esse erro, por exemplo, quando os arquivos de banco de dados são armazenados em um nas (armazenamento anexado à rede) ou dispositivo SAN acessado pela rede. Em casos como este, talvez seja necessário verificar a integridade física dos bancos de dados depois que o dispositivo de disco for restaurado executando DBCC CHECKDB. Se o dano do banco de dados for relatado, restaure um último backup de banco de dados válido conhecido.