Restaurando um banco apenas com o .mdf

Surgiu uma solicitao para eu restaurar um banco. At a, tudo ok, um processo normal. RESTORE DATABASE Blblbl, permisses dadas e assunto encerrado.
Ao ver o arquivo, havia apenas um .mdf. Ou seja, no mais um restore, um ATTACH. Seria outroprocesso normal tambm… Se existissem os arquivos de log (.ldf).

Ao tentar restaurar, o seguinte erro surgiu:

File activation failure. The physical file name “C:\Caminho\Original\do\banco\arquivo_log.LDF” may be incorrect.

The log cannot be rebuilt because there were open transactions/users when the database was shutdown, no checkpoint occurred to the database, or the database was read-only. This error could occur if the transaction log file was manually deleted or lost due to a hardware or environment failure.

Mas vamos l, passo a passo, para vermos os problemas que podem aparecer e como resolver.

Primeiro, vamos rodar o comando bsico para anexar (no consigo gostar da palavra atachar) o banco

Os mesmo erro para os dois casos. Bom, vamos tentar uma outra forma:

  1. Criar um banco com o mesmo nome, mas com arquivos fake;
  2. Deix-lo offline;
  3. Mudar o caminho dos arquivos, apontando para o mdf de origem;
  4. Passar o banco para modo online.

, no… no funcionou. Terminamos por aqui e pedimos um .bak? Seria fcil, but not yet, dear Padawan

Repareque o banco est restaurado, mas com o statusRecovery Pending.

Vamos ento colocar ele em modo Single Usere vamos rodar um DBCC CHECKDB para ver o que acontece.

Legal, a mensagem j mudou…Mas como o log estava em um caminho diferente e a pasta no existe, o log no criado.

Ento vamos l: Criamos a pasta e mais um teste…

recover_nolog

Belezinha, tudo certo! Log recriado e banco no ar. Mas, veja, ainda na pasta de origem.

Para ajustar, faa a movimentao do log criado e est resolvido.

Abraos!

PS: Nos meus testes, eu notei que ao realizar o processo em uma instncia maior do que a de origem (eu estava usando a verso 2016 CTP ainda, e o banco era 2014), eu no conseguia, pois ele exigia o upgrade do banco. Como tinha uma instncia na mesma verso, no fui a fundo, mas fica a dica desde j….

Fonte:http://www.sqlskills.com/blogs/paul/checkdb-from-every-angle-emergency-mode-repair-the-very-very-last-resort/

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.