Vamos falar um pouco sobre recuperação do arquivo de log. Abaixo iremos simular um problema envolvendo o arquivo de transação. Suponhamos que ele esteja armazenado em um disco diferente do que está o arquivo de dados, este disco por algum problema o disco é danificado e o arquivo de transação é perdido justamente no dia em que ocorreram uma quantidade boa de transações. Seu banco de dados entra em modo "suspect" por não conseguir acessar o arquivo de log. Você pode até tentar tirar o status de "suspect" utilizando outros procedimentos mas não consegue. Então fica a pergunta o que fazer?
Uma das soluções é você colocar seu banco em modo "Emergency" e transferir os dados para outra base de dados, mas acho que podemos resolver isso de uma forma mais simples e rápida.
No SQL Server existem algumas procedures não documentadas, e em uma delas está nossa solução, vamos utilizar o DBCC REBUILD_LOG. Com ela iremos reconstruir nosso arquivo de log e fazer a normalização do banco de dados. Abaixo todo o procedimento para a criação do no arquivo de log.
1. Vamos colocar nosso banco em modo "Emergency", alterando seu status para o código -32768
use master
go
sp_configure 'allow updates', 1
go
reconfigure with override
go
update sysdatabases set status = -32768 where [name] = "db_NomeBanco"
2. Agora executamos o comando dbcc_rebuild_log, onde passamos por parâmetro no nome do banco a ser reconstruído o log.
dbcc rebuild_log(db_NomeBanco)
go
3. Para finalizar voltamos o modo "allow updates" para 0
use master
go
sp_configure 'allow updates', 0
go
reconfigure with override
go
Com isso finalizamos nosso procedimento de recuperação do arquivo de log.
Obs.: Este procedimento deve ser feito em último caso, somente quando ocorrer a perda do arquivo de log de transação.