Como Resolver o Problema ‘O Banco de Dados não Pode Ser Aberto’ do SQL Server Devido à Corrupção do MDF?

O ficheiro de base de dados principal (MDF) é o ficheiro de base de dados primária no MS SQL Server que armazena todos os dados, incluindo vistas, tabelas, procedimentos armazenados, chaves estrangeiras e chaves primárias. Por vezes, ao abrir o ficheiro MDF, pode deparar-se com um problema em que a base de dados do SQL Server não pode ser aberta e encontrar um erro, como o indicado abaixo:

  • Erro do SQL Server 5171: MDF não é um ficheiro de base de dados primária
  • Não é possível abrir o ficheiro xxxxx.mdf. Erro do sistema operativo 5: (Acesso negado)”
  • ID do Evento 824: O SQL Server detetou um erro de E/S baseado em consistência lógica
  • Msg 8114, Nível 16, Estado 5, Linha 2: Erro na conversão do tipo de dados varchar para numérico

Estes erros ocorrem geralmente quando há corrupção no ficheiro MDF. Neste artigo, vamos explicar as possíveis razões por trás da corrupção dos ficheiros MDF e mostrar como reparar ficheiros MDF corrompidos e resolver o problema.

Causas de Corrupção no Ficheiro MDF

Há várias razões que podem levar à corrupção no ficheiro de base de dados do SQL Server (MDF). Algumas comuns são as seguintes:

Falha do MS SQL Server ou do Sistema

O MS SQL Server ou o sistema podem falhar devido a problemas com o sistema operativo, hardware ou software. Se o servidor ou sistema falhar enquanto trabalha no ficheiro MDF, pode danificar ou corromper o ficheiro.

Encerramento Abrupto do Sistema

Uma falha de energia repentina ou um desligamento forçado do sistema enquanto o SQL Server está em execução pode corromper o arquivo MDF armazenado no seu sistema.

Ataques de Malware ou Vírus

Malware ou vírus também podem danificar arquivos MDF e torná-los inacessíveis. Isso geralmente ocorre quando o seu sistema não possui um software de proteção antivírus ou antimalware.

Problemas com a Unidade de Armazenamento

Sectores defeituosos na unidade de armazenamento ou erros no sistema de arquivos podem corromper os arquivos do banco de dados SQL. Se a unidade estiver danificada, ela também pode causar corrupção nos arquivos MDF.

Métodos para Resolver o Problema ‘Banco de Dados não Pode ser Aberto’ devido à Corrupção do Arquivo MDF

Se o seu arquivo MDF estiver corrompido, você pode seguir os métodos abaixo mencionados para reparar e recuperar o arquivo MDF corrompido, resolvendo assim o problema “Banco de Dados não Pode ser Aberto” no SQL Server.

Método 1: Restaurar o Arquivo MDF do Backup

Se você criou um backup do seu arquivo MDF, então você pode restaurar o arquivo a partir do backup. Mas antes de restaurar, você precisa verificar se o seu backup está completo e legível. Para isso, você pode usar o comando RESTORE VERIFY ONLY. Se este comando mostrar uma mensagem de sucesso, então você pode prosseguir para restaurar o backup. Para isso, use o comando Transact SQL abaixo:

MS SQL

 

Alternativamente, você pode usar o SQL Server Management Studio (SSMS) para restaurar o backup.

Método 2: Use o comando DBCC CHECKDB

Se o backup não estiver atualizado ou houver um problema ao restaurar o arquivo de backup, você pode usar o comando DBCC CHECKDB para reparar o arquivo MDF corrompido. Para reparar o arquivo do banco de dados, você precisa ter direitos de administrador no banco de dados. Antes de reparar, defina o banco de dados para o modo de usuário único usando o comando abaixo:

MS SQL

 

Se você não conseguir definir o banco de dados para o modo SINGLE_USER, verifique se a opção AUTO_UPDATE_STATISTICS_ASYNC está definida como OFF.

Em seguida, execute o comando DBCC CHECKDB como mostrado abaixo para reparar o arquivo do banco de dados (MDF):

MS SQL

 

Quando o banco de dados estiver reparado, defina-o novamente para o modo MULTI_USER usando o comando abaixo:

MS SQL

 

Nota: O comando DBCC CHECKDB pode ajudar a reparar o arquivo MDF. No entanto, ao reparar o arquivo, ele pode desalocar páginas ou linhas, o que pode resultar em perda de dados. 

Método 3: Usar uma Ferramenta Profissional de Reparo SQL

Reparar o banco de dados SQL usando o comando DBCC CHECKDB com a opção REPAIR_ALLOW_DATA_LOSS pode resultar em perda de dados. Para evitar a perda de dados, você pode usar um software de reparo MS SQL poderoso, como o Stellar Repair for MS SQL. Este software pode reparar arquivos MDF corrompidos e restaurar todos os objetos do arquivo, como chaves primárias, tabelas, gatilhos, visualizações, etc., sem alterar a estrutura original. Ele salva os dados do arquivo reparado em um novo arquivo MDF e em vários outros formatos, como CSV, HTML e XLS. O software suporta arquivos de banco de dados SQL (MDF e NDF) criados em sistemas Windows e Linux. 

Para Concluir

O problema ‘Banco de dados não pode ser aberto’ no MS SQL Server pode ocorrer devido à corrupção no arquivo MDF. Para corrigir esse problema, a maneira mais fácil é restaurar o arquivo MDF do último backup. Se o arquivo de backup estiver obsoleto ou não estiver funcionando, você pode usar o comando DBCC CHECKDB para reparar o arquivo MDF corrompido. Se o comando DBCC CHECKDB falhar ao reparar o banco de dados, então use uma ferramenta de reparo SQL poderosa, como o Stellar Repair for MS SQL. Ele pode reparar arquivos MDF corrompidos e restaurar todos os dados para um novo arquivo MDF com total integridade. Você pode instalar a versão gratuita do Stellar Repair for MS SQL para escanear o arquivo MDF corrompido e visualizar os dados recuperáveis.

Source:
https://dzone.com/articles/resolve-sql-server-database-cannot-be-opened-mdf-issue