Script Restore – Restaurando vários arquivos de Backup de Log – Utilizando o MSDB

Fala Pessoal,

No post anterior, compartilhei um script para fazer o restore com vários arquivos de Backup de Log que foram gerados através de um Plano de Manutenção do SQL Server. Se você ainda não viu, confere lá, pois irei pular algumas partes que já expliquei anteriormente.

https://luizlima.net/script-restore-restaurando-varios-arquivos-de-backup-de-log-plano-de-manutencao/

Agora vou compartilhar um outro script para fazer o restore com vários arquivos de Backup de Log, mas dessa vez iremos buscar as informações dos arquivos na database “msdb”.

Entendendo o script:

  • Parâmetros iniciais:

Assim como no script anterior, a ideia do Teste de Restore é você apenas alterar os parâmetros informando o nome da base e os arquivos de backup que serão utilizados.

IMPORTANTE: Ao executar, o resultado será um outro script que você deverá copiar em outra query para fazer o RESTORE.

A opção do STANDBY eu irei abordar no próximo post. Ignore essa por enquanto OK.

Comparando com o script anterior, dessa vez não precisamos informar nada sobre os arquivos de Backup de Log, pois o script irá buscar as informações diretamente da database “msdb”.

  • Observações:
  • Versão SQL Server:

Dependendo da versão do SQL Server que você utilizar, pode ser necessário comentar algumas linhas desse script. Caso contrário, você pode receber o erro abaixo:

Msg 213, Level 16, State 7, Line 1

Column name or number of supplied values does not match table definition.

Msg 3013, Level 16, State 1, Line 1

RESTORE HEADERONLY is terminating abnormally.

Verificar as linhas abaixo:

Linha 80:

Linha 138:


Database “msdb”:

Esse script foi preparado especificamente para restaurar Backups de Log buscando as informações dos arquivos diretamente da database “msdb”.  O script irá buscar as informações da seguinte forma:

IMPORTANTE:

Aqui precisamos ressaltar que a coluna “name” deve ter o caminho completo do arquivo de backup de log (nome pasta + nome arquivo). Segue abaixo um exemplo:

Para gravar essa informação no MSDB, você precisa preencher o parâmetro “NAME” quando executar o BACKUP. Portanto, bastaria você verificar a sua rotina de backup atual e alterar esse parâmetro para poder utilizar o script de restore desse post.


Resultado do script:

O resultado desse script é o mesmo do post anterior, ele irá gerar o script para que você possa executar o RESTORE. Segue abaixo um exemplo:

No post anterior eu explico com mais detalhes cada passo do RESTORE. Aqui irei resumir um pouco.

Primeiro iremos restaurar o BACKUP FULL. Nesse momento, a base será criada no SQL Server e ficará com o status “RESTORING” para que possamos continuar restaurando os outros backups. Lembrando que a base não estará disponível para acesso enquanto estiver com o status “RESTORING”. Se você informar o parâmetro do BACKUP DIFERENCIAL, execute também o segundo comando do restore.

Nesse teste de restore utilizei os arquivos de backup de log abaixo:

Após executar todos os comandos de RESTORE, podemos deixar a base ONLINE. A partir de agora a base já estará disponível para ser acessada.

Pronto! Conseguimos validar com sucesso os nossos Backups! Espero que tenha conseguido explicar como ele funciona e se tiver alguma dúvida deixe um comentário para que eu possa tentar te ajudar.

Se você ficou com alguma dúvida na explicação sobre o restore, dê uma olhada também no post anterior onde explico com mais detalhes.

E você, já está validando os Backups do seu ambiente? Está esperando o que?

No próximo post irei mostrar alguns exemplos de como utilizar as opções STOPAT e STANDBY com mais detalhes. Aguarde!!!


Por fim, vou fazer um pequeno comparativo com os dois scripts de restore que disponibilizei. Com isso, fica a seu critério escolher a melhor opção para o seu caso.

MSDB:

  • Vantagens:
  • Não precisa utilizar a procedure “xp_cmdshell” para listar os arquivos de Backup de Log. Com isso, temos mais segurança.
  • Você pode utilizar qualquer padrão de nomenclatura para o arquivo, desde que preencha o parâmetro NAME (nome pasta + nome arquivo) quando executar o BACKUP. 
  • Desvantagens:
  • Fica dependente da database “msdb”. Agora imagina se acontecer algum desastre e essa database for perdida. Com isso, não será possível utilizar esse script para restaurar os Backups.

Plano de Manutenção:

  • Vantagens:
  • Não depende da database “msdb” para fazer o restore. Com isso, se acontecer algum desastre, bastaria disponibilizar os arquivos de backup necessários em alguma pasta e executar o script de Restore. 
  • Desvantagens: 
  • Utiliza a procedure “xp_cmdshell” que possui alguns riscos para a segurança. Por esse motivo que habilitamos e desabilitamos a mesma quando a opção não está habilitada na instância.
  • Os arquivos de Backup de Log devem seguir um padrão de nomenclatura que é gerado pelo Plano de Manutenção do SQL Server, ou deve ser utilizado uma rotina de Backup que gere os arquivos dessa forma também. Por exemplo: NOME_DATABASE_backup_2019_02_19_080418_0336431.trn

Download “Script Restore – Restaurando vários arquivos de Backup de Log – Utilizando o MSDB”:

Segue o link para baixar o script utilizado nesse Post:

Link: https://github.com/luizvitorf/SQLServer/blob/master/Scripts/Backup%20e%20Restore/Script%20Restore%20%E2%80%93%20Restaurando%20v%C3%A1rios%20arquivos%20de%20Backup%20de%20Log%20%E2%80%93%20Utilizando%20o%20MSDB.sql


Espero que tenha gostado e que isso também possa ser útil no seu dia a dia. Até o próximo post!

Me siga no LinkedIn e YouTube para ficar por dentro das novidades.

Abraço,

Luiz Vitor França Lima

Consultor SQL Server

3 comentários em “Script Restore – Restaurando vários arquivos de Backup de Log – Utilizando o MSDB

  1. Tássio Carlini Responder

    Script muito útil, parabéns Luiz, obrigado por compartilhar, já tá salvo no meu Github aqui, realmente o trabalho de restaurar log é bem trabalho, fica bem mais prático com esse ai. hehehe.

    • Luiz Lima Autor do postResponder

      Fala Tássio,

      Que bom que gostou! Esse script é uma mão na roda e muito útil mesmo kkkk.

      Ele agiliza e facilita bastante quando precisamos restaurar muitos arquivos de Backup de Log.

      Aproveite =)

      Abraço.
      Luiz Vitor

  2. Pingback: Script Restore – Restaurando vários arquivos de Backup de Log – Opções STOPAT e STANDBY – Luiz Lima

Deixe uma resposta para Tássio CarliniCancelar resposta