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
VÁ
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
VÁ
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
VÁ
Por fim, restaure o backup do log da cauda
Restaurar LOG PageLevelRestores DE
Círculo ='g:PageLevelRestores_LOG_TAIL.bak'
SEM RECUPERAÇÃO
VÁ
Finalmente, termine com a sequência de restauração
Restaurar DATABASE PageLevelRestores COM RECUPERAÇÃO
VÁ
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:
- É absurdo esperar Restaurar do backup do banco de dados SQL quando o backup acessível está desatualizado.
- 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.
- 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.