Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: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 operativo retornou o erro %ls ao SQL Server durante um %S_MSG no deslocamento %#016I64x no arquivo '%ls'. Mensagens adicionais no log de erros do SQL Server e no log de eventos do sistema podem fornecer mais detalhes. Esta é uma condição de erro grave no nível do sistema que ameaça a integridade do banco de dados e deve ser corrigida imediatamente. Conclua uma verificação completa de consistência do banco de dados (DBCC CHECKDB). Este erro pode ser causado por muitos fatores; para obter mais informações, consulte os Manuais Online do SQL Server. |
Explicação
O SQL Server utiliza APIs do Windows, como ReadFile, WriteFile, ReadFileScatter e WriteFileGather, para realizar operações de I/O de ficheiros. Depois que o SQL Server executa essas operações de E/S, ele verifica se há condições de erro associadas a essas chamadas de API. Se as chamadas à API falharem devido a um erro do sistema operativo (SO), o SQL Server reporta 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 onde a operação de E/S foi tentada. Este deslocamento é o deslocamento físico de bytes a partir do início do ficheiro. Dividir este número por 8.192 dá-lhe o número lógico da página 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 operativo e a descrição do erro estão entre parênteses.
Erros gerados pelo sistema operativo
Um erro do sistema operativo ocorre quando uma chamada de API do Windows de leitura ou escrita não é bem-sucedida, e o SQL Server encontra um erro do sistema operativo relacionado com a 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
Podes ver erros na DBCC CHECKDB instrução na base de dados associada ao ficheiro na mensagem de erro. Pode executar a DBCC CHECKDB instrução quando vir um erro 823. Se a DBCC CHECKDB instrução não reportar erros, provavelmente tens um problema intermitente no sistema ou no disco.
Pode ver mais informação de diagnóstico para erros 823 no ficheiro de registo de erros do SQL Server usando o traço flag 818. Para obter mais informações, consulte o diagnóstico do SQL Server deteta problemas de E/S não relatados devido a leituras obsoletas ou gravações perdidas.
Motivo
A mensagem de erro 823 normalmente indica que há um problema com o sistema de armazenamento subjacente, ou com o hardware ou com um driver que está no caminho do pedido de E/S. Você pode 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 ficheiro, o SQL Server tenta novamente o pedido de leitura quatro vezes antes de devolver o 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
Revise a tabela suspect_pages para
msdboutras páginas que encontrem este problema (na mesma base de dados ou noutras bases de dados).Verifique a consistência das bases de dados localizadas no mesmo volume (como o reportado na mensagem 823) usando o
DBCC CHECKDBcomando. Se encontrar inconsistências noDBCC CHECKDBcomando, use a orientação de Como resolver erros de consistência na base de dados reportados pelo DBCC CHECKB.Revise os registos de Eventos do Windows para quaisquer erros ou mensagens reportadas pelo sistema operativo, um dispositivo de armazenamento ou um controlador 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 detetou um erro de controlador em \Device\Harddisk4\DR4" relatado pela fonte de disco no log de eventos. Nesse caso, precisa de avaliar se este ficheiro está presente neste dispositivo e depois corrigir esses erros de disco.
Use a utilidade SQLIOSim para descobrir se estes erros 823 podem ser reproduzidos fora dos pedidos normais de I/O do SQL Server. O utilitário SQLIOSim é fornecido com o SQL Server 2008 e versões posteriores, portanto, não há necessidade de um download separado. Normalmente, pode encontrá-lo na sua
C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binnpasta.Trabalhe com o seu fornecedor de hardware ou fabricante do dispositivo para garantir:
- Os dispositivos de hardware e a configuração cumprem os requisitos de E/S do SQL Server.
- Os drivers de dispositivos e outros componentes de software de suporte de todos os dispositivos no caminho de I/O estão atualizados.
Se o fabricante do hardware ou do dispositivo lhe forneceu alguma utilidade de diagnóstico, use-as para avaliar o estado do sistema de I/O.
Avalie se existem drivers de filtro no caminho dessas solicitações de E/S que encontram problemas.
Verifique se há atualizações nestes drivers de filtro.
Pode remover ou desativar estes drivers de filtro para observar se o problema que resulta no erro 823 desaparece?
Exemplo com erro de sistema operativo 21
Neste caso, o erro subjacente do sistema operativo 21 indica que o dispositivo de disco está offline e não disponível para o sistema operativo 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 encontrares um cenário semelhante, resolve o erro do sistema operativo subjacente. Neste caso, trabalhe com o administrador do sistema e o fornecedor de hardware para garantir que o dispositivo de disco está online e a funcionar corretamente. Certifique-se de que não há erros ou danos reportados.
Uma ligação de rede instável também pode causar este erro, por exemplo, quando ficheiros de base de dados são armazenados num dispositivo de armazenamento ligado à rede (NAS) ou SAN acedido através da rede. Em casos como este, pode ser necessário verificar a integridade física das bases de dados depois de o dispositivo de disco ser restaurado, executando o DBCC CHECKDB. Se forem reportados danos na base de dados, restaure uma última cópia de segurança conhecida e boa.