Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Maneiras de corrigir o SQL Server detectado um erro de E/S baseado em consistência lógica


Resumo: O problema de inacessibilidade do banco de dados SQL é o problema comum enfrentado pelos usuários do banco de dados. Portanto, este blog de solução de problemas discutirá o SQL Server detectou um erro de E/S baseado em consistência lógica. Vamos discutir a razão por trás desse erro e as melhores maneiras possíveis de saber como lidar com esse problema. Para acessar e recuperar o banco de dados SQL inacessível, o usuário pode obter a ajuda do Recover SQL Server Database Tool.




Razões por trás do erro de E/S baseado na consistência lógica do banco de dados:



  • Desligamento/travamento repentino do sistema ou desligamento restrito
  • O administrador SQL tenta consultar ou alterar dados SQL

No momento em que um banco de dados SQL Server encontra um erro baseado em consistência lógica, a etapa inicial é detectar o erro.

As estratégias de acompanhamento podem ajudar na detecção do erro:
  • Use a ferramenta Best Practice Analyzer (BPA) – a ferramenta BPA ajuda a identificar erros básicos de consistência. Essa ferramenta é explícita para a variante SQL, o que significa que o BPA 2008 pode ser acessado com SQL 2008 etc.
  • Verifique o sistema Windows no nível da estrutura do log de eventos, drivers ou erros relacionados ao disco
  • Verifique a respeitabilidade da estrutura de arquivos executando chkdsk order
  • Execute os diagnósticos sugeridos pelos produtores de hardware para a estrutura ou disco
  • Para o SQL Server 2008, execute o utilitário SQLIOSim na unidade do banco de dados que anunciou o erro de E/S.
  • Entre em contato com o vendedor de hardware ou o fabricante do dispositivo para verificar se os pré-requisitos de hardware atendem às necessidades de E/S do servidor SQL.

Maneiras manuais de lidar com o SQL Server detectado um erro de E/S baseado em consistência lógica


Técnica 1 – Verifique o hardware e a rede de aplicativos

O erro de irregularidade do banco de dados pode ser corrigido criando uma rede apropriada entre o banco de dados e o aplicativo SQL.

Técnica 2 – Restaurar do backup do SQL

A solução mais viável é utilizar backup para recuperação de banco de dados SQL. Antes de restaurar do backup, certifique-se de que:
  • Você tem um backup completo em andamento
  • O backup é atualizado, apenas antes da corrupção, e não muito antigo para manter uma distância estratégica da perda de dados básicos.
  • A corrupção está no nível da página, pois os problemas de corrupção no nível da página podem ser resolvidos com a ajuda da restauração no nível da página.

Etapa 1: Use a ordem de acompanhamento para restaurar o banco de dados SQL de um backup completo



Faça backup do log de transações

Backup LOG PageLevelRestores TO

Placa ='g:PageLevelRestores_LOG1.bak'

COM INIT



Etapa 2: Execute a alteração de restauração para espelhar as progressões online.

Faça backup do final do log…

Backup LOG PageLevelRestores TO

Círculo ='g:PageLevelRestores_LOG_TAIL.bak'

COM INIT



Observação:não há motivo convincente para restaurar o banco de dados completo do SQL Server se a corrupção estiver vinculada a uma única página. Você pode restaurar o banco de dados do backup acessível para essa página que está prejudicada. A execução de pedidos de acompanhamento ajudará a restaurar o backup de uma página solitária:

Restaure todos os backups de log acessíveis na solicitação certa

Restaurar LOG PageLevelRestores DE

Círculo ='g:PageLevelRestores_LOG1.bak'

SEM RECUPERAÇÃO



Por fim, restaure o backup do log da cauda



Restaurar LOG PageLevelRestores DE

Círculo ='g:PageLevelRestores_LOG_TAIL.bak'

SEM RECUPERAÇÃO



Finalmente, termine com a sequência de restauração

Restaurar DATABASE PageLevelRestores COM RECUPERAÇÃO



Quando o backup do banco de dados tiver restaurado o banco de dados SQL, execute a consulta DBCC CHECKDB novamente para verificar se a proclamação selecionada prevalece sem erro de E/S baseado em consistência lógica do Banco de Dados SQL. Esta ordem também observa que não há perda de dados nesta tabela.

Limitações do backup do banco de dados SQL:


  1. É absurdo esperar Restaurar do backup do banco de dados SQL quando o backup acessível está desatualizado.
  2. Se o erro de E/S baseado em consistência lógica estiver espalhado pelo banco de dados do SQL Server, nesse ponto essa estratégia não será legítima.
  3. Para aquelas situações em que a página com defeito existe em um índice não clusterizado, o banco de dados SQL pode ser corrigido descartando e recriando o índice do banco de dados SQL.

Técnica 3:Repare o banco de dados SQL corrompido com REPAIR_ALLOW_DATA_LOSS

REPAIR_ALLOW_DATA_LOSS é o nível fixo base para os erros analisados.

Observações:Antes de utilizar REPAIR_ALLOW_DATA_LOSS, execute o seguinte:

Faça um backup do banco de dados do servidor SQL e salve-o com outro nome

Definir banco de dados SQL no modo de usuário único

Obtenha toda a contagem de registros de tabelas usando os comandos que acompanham

Proclamar @COUNT INT

Proclamar @SQL VARCHAR(2000)

Faça a TABELA #T_Info(ID INT IDENTITY(1,1),T_Name VARCHAR(200),D_Count INT)

Proclamar TINFO_CUR CURSOR PARA

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_TYPE='BASE TABLE'

ABRIR TINFO_CUR

Obtenha o PRÓXIMO DE TINFO_CUR INTO @T_Name

ENQUANTO @@FETCH_STATUS =0

Iniciar

SET @SQL='INSERT INTO #T_Info(T_Name,D_Count) SELECT ”’[email protected]_Name+”’,COUNT(*) FROM ‘[email protected]_Name+”

EXECUTAR (@SQL)

Obtenha o PRÓXIMO DE TINFO_CUR INTO @T_Name

FIM

FECHAR TINFO_CUR

DEALLOCATE TINFO_CUR

SELECT * FROM #T_Info ORDER BY T_NAME

Os avanços que acompanham ajudam a corrigir o banco de dados SQL e resolver erros de E/S coerentes baseados em consistência:

Execute o comando:

DBCC CHECKDB (DB_NAME, REPAIR_ALLOW_DATA_LOSS)

Depois que o banco de dados SQL for corrigido, refaça o procedimento de 'Contagem de registros de tabela' e contraste com a contagem de registros antigos.

Não deve haver nenhuma distinção entre a contagem inicial e a última do registro da Tabela.

Restrições :

REPAIR_ALLOW_DATA_LOSS pode corrigir o erro de E/S baseado em consistência lógica do banco de dados, mas há um problema significativo de perda de dados, onde uma conexão pode encontrar perda de dados básicos.

Solução eletiva


Se as técnicas acima não funcionarem, nesse ponto, consulte uma ferramenta de reparo de arquivos SQL do SysTools . Esta ferramenta corrige arquivos MDF e NDF corrompidos e restaura todos os objetos do banco de dados. Além disso, esta ferramenta ajuda a recuperar todos os objetos do banco de dados, como Tabelas, Triggers, Índices, Chaves, Regras, arquivos excluídos e Stored Procedures. É de uma ajuda incrível em meio a uma emergência, pois o produto oferece uma solução de reparo inconfundível e suporta todas as versões do banco de dados SQL.


Conclusão


Leia também: Como verificar se o banco de dados SQL está corrompido

Nesta postagem, apresentamos o motivo pelo qual o SQL Server detectou um erro de E/S baseado em consistência lógica e as técnicas para resolver esse problema.

Em vista do erro, tentamos localizar a técnica correta. Na chance de que o hardware ou a estrutura seja responsável pelo erro, é prescrito para determinar os problemas relacionados ao hardware e, no caso de DBCC CHECKDB relatar erro de consistência, tente restaurar o banco de dados SQL usando um backup atualizado.

Se o problema não for corrigido com hardware e backup, tente corrigir o banco de dados com a ajuda de REPAIR_ALLOW_DATA_LOSS. Este é o grau básico de correção para determinar todos os erros do CHECKDB, mas isso não significa que ele realmente corrigirá o erro. Além disso, pode causar perda de dados.