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:
BACKUP DATABASE [AdventureWorks2019] TO DISK = N’C:\backups\AdventureWorks2019.bak’ WITH NOFORMAT, NOINIT, NAME = N’AdventureWorks2019-Full Database Backup’, SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
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:
ALTER DATABASE Dbtesting SET SINGLE_USER
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):
DBCC CHECKDB (N ’Dbtesting’, REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS
GO
Quando o banco de dados estiver reparado, defina-o novamente para o modo MULTI_USER
usando o comando abaixo:
ALTER DATABASE Dbtesting SET MULTI_USER
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