Recuperação de banco de dados corrompido
Enviado: 05 Mai 2015, 15:53
É importante que o procedimento seja realizado na mesma versão e edição de banco de dados da base corrompida, exemplo, se o banco corrompeu na versão 2005 execute no 2005 se foi no 2008 R2 execute no 2008 R2.
Execute um comando por vez.
1. Pelo Microsoft SQL Server Management Studio, criar um novo banco de dados com o mesmo nome do banco corrompido, no caso MISTERCHEFNET.
* Obs.: Caso tenha um banco anexo com este nome desatache antes de iniciar.
2. Parar o serviço do SQL Server;
3. Na pasta onde foram criados os novos arquivos MISTERCHEFNET.mdf e MISTERCHEFNET.ldf, substituir os arquivos criados pelos arquivos corrompidos;
4. Iniciar o serviço do SQL Server;
5. Neste momento o banco de dados vai ficar em 'SUSPECT' por causa da troca dos arquivos (Dê um refresh no painel Object Explorer no Management Studio para visualizar o status), coloque o banco em ‘EMERGENCY’:
6. Coloque o banco em SINGLE USER:
OU
7. Execute o CHECKDB para corrigir o banco:
8. Retorne o banco para MULTI USER:
OU
9. Execute o comando para reindexar as tabelas:
10. Execute o comando SHRINK para reajustar o tamanho do banco de dados:
11.Teste o Banco de dados.
Obs.: Procedimento foi testado usando o SQL Server Express 2005.
Execute um comando por vez.
1. Pelo Microsoft SQL Server Management Studio, criar um novo banco de dados com o mesmo nome do banco corrompido, no caso MISTERCHEFNET.
Código: Selecionar todos
CREATE DATABASE MISTERCHEFNET
* Obs.: Caso tenha um banco anexo com este nome desatache antes de iniciar.
2. Parar o serviço do SQL Server;
3. Na pasta onde foram criados os novos arquivos MISTERCHEFNET.mdf e MISTERCHEFNET.ldf, substituir os arquivos criados pelos arquivos corrompidos;
4. Iniciar o serviço do SQL Server;
5. Neste momento o banco de dados vai ficar em 'SUSPECT' por causa da troca dos arquivos (Dê um refresh no painel Object Explorer no Management Studio para visualizar o status), coloque o banco em ‘EMERGENCY’:
Código: Selecionar todos
ALTER DATABASE MISTERCHEFNET SET EMERGENCY
6. Coloque o banco em SINGLE USER:
Código: Selecionar todos
ALTER DATABASE MISTERCHEFNET SET SINGLE_USER
OU
Código: Selecionar todos
SP_DBOPTION MISTERCHEFNET, ‘SINGLE_USER’,TRUE
7. Execute o CHECKDB para corrigir o banco:
Código: Selecionar todos
DBCC CHECKDB (MISTERCHEFNET, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS
8. Retorne o banco para MULTI USER:
Código: Selecionar todos
ALTER DATABASE MISTERCHEFNET SET MULTI_USER WITH ROLLBACK IMMEDIATE
OU
Código: Selecionar todos
SP_DBOPTION MISTERCHEFNET, ‘SINGLE_USER’,FALSE
9. Execute o comando para reindexar as tabelas:
Código: Selecionar todos
EXEC sp_MSforeachtable @command1= "ALTER INDEX ALL ON '?' REBUILD WITH (FILLFACTOR = 80,SORT_IN_TEMPDB = ON,STATISTICS_NORECOMPUTE = ON)"
10. Execute o comando SHRINK para reajustar o tamanho do banco de dados:
Código: Selecionar todos
DBCC SHRINKDATABASE (N'MISTERCHEFNET' )
Código: Selecionar todos
DBCC SHRINKFILE (1, 0, TRUNCATEONLY)
Código: Selecionar todos
DBCC SHRINKFILE (2, 0, TRUNCATEONLY)
11.Teste o Banco de dados.
Obs.: Procedimento foi testado usando o SQL Server Express 2005.