Recuperando Arquivo de Log

Como recuperar arquivo de log de transação utilizando procedures não documentadas.

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.

Artigos relacionados