Erro MSSQL: erro de E/S baseado em consistência - pode ser causado por um problema de MSSQL ou sistema operacional?

Erro MSSQL: erro de E/S baseado em consistência - pode ser causado por um problema de MSSQL ou sistema operacional?

Isto é o que vi no log de erros do Windows:

O SQL Server detectou um erro de E/S baseado em consistência lógica: soma de verificação incorreta (esperado: 0x19fedd20; real: 0x19fed5e3). Ocorreu durante uma leitura da página (1:1764) no ID 6 do banco de dados no deslocamento 0x00000000dc8000 no arquivo 'D:\mssql\local_repository_pbdiffimport.mdf'. Mensagens adicionais no log de erros do SQL Server ou no log de eventos do sistema podem fornecer mais detalhes. Esta é uma condição de erro grave 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 vários fatores; para obter mais informações, consulte os Manuais Online do SQL Server.

eu corri

banco de verificação DBCC

que me disse que eu deveria restaurar com a opção REPAIR_ALLOW_DATA_LOSS, então finalmente executei

DBCC CHECKDB (meu_nome_db, REPAIR_ALLOW_DATA_LOSS) COM NO_INFOMSGS

Mas isso resultou na perda de cerca de 2.000 linhas. Restaurei um backup, mas agora temo que isso aconteça novamente, pois já tivemos um problema de consistência no mesmo banco de dados há cerca de 2 semanas, mas depois aconteceu em um índice (índices recriados resolveram o problema).

Investigamos os discos - o RAID5 parece bom, sem erros e nenhum dos utilitários de verificação de disco revelou qualquer problema de hardware.

Isso pode ser causado pelo sistema operacional (Windows Server 2003) ou pelo MSSQL (MSSQL Server 2005)?

Responder1

A consistência pode ser causada por qualquer um dos fatores de hardware ou software. Consulte os logs SQL para investigar o que potencialmente causou o problema.

Minhas sugestões:

  • Certifique-se de que a opção Banco de dados, Page_Verify, esteja definida como CHECKSUM. Isso verifica todas as gravações antes que elas aconteçam e é a configuração padrão no SQL Server 2005.
  • Backup diário ou várias vezes ao dia (dependendo da necessidade)
  • Configure planos de manutenção para verificar a consistência do seu banco de dados diariamente
  • Mantenha seu Windows Server e Sql Server atualizados com patches, software de terceiros também.
  • Ler "Principais dicas para manutenção eficaz do banco de dados"pois explica a maioria das minhas sugestões com mais detalhes.

Recomendo muito este artigo porque foi escrito para ajudar SysAdmins que não sabem gerenciar um servidor de banco de dados.

Responder2

Você provavelmente tem eventos de hardware relatados no log de eventos do sistema e deve investigá-los.

Execute SQLIOSIM para sobrecarregar o disco por +24 horas. Se o SQLIOSIM reportar um erro, você terá que entrar em contato com o fornecedor de hardware para investigar. Pode ser do disco, da matriz RAID, dos drivers. O sistema operacional e o SQL são os culpados menos prováveis.

VerComo usar o utilitário SQLIOSim para simular a atividade do SQL Server em um subsistema de disco.

Responder3

Definitivamente não é um problema do SQL Server (bem, muito, muito improvável). TAMBÉM não é provável que seja um problema de sistema operacional - simplesmente porque gravações ruins são óbvias demais para sobreviverem por muito tempo como um erro.

Isso aponta seriamente na direção do hardware. RAM (você usa ECC?) é um possível culpado, assim como quaisquer outros tipos de problemas relacionados (controlador RAID? Discos?)

informação relacionada