SQL Server, restaurar o diferencial mais recente

3

Temos um servidor de desenvolvimento que possui uma tarefa que é executada durante a noite, restaurando os bancos de dados de backup. Nosso servidor de banco de dados primário faz backup dos bancos de dados durante a noite e nosso servidor de desenvolvimento restaura esses bancos de dados para mantê-los atualizados diariamente (não em base transacional).

Como nossos bancos de dados estão sobrecarregando muitos gigabytes, agora enfrentamos o problema que restaura levar muitas horas durante a noite. Em vez disso, estamos querendo forçar o uso de backups e restaurações diferenciais de banco de dados.

O problema que tenho é que o servidor de desenvolvimento faz uma restauração, mas como posso saber qual arquivo escolher no backup diferencial? Você precisa especificar um arquivo, ou seja, FILE = 9 na instrução de restauração, mas e se eu não souber qual arquivo é? E se eu quiser apenas o último?

Então, como você especifica o arquivo mais recente a partir de um backup de banco de dados diferencial?

link

Felicidades

    
por Kezzer 23.11.2009 / 15:22

2 respostas

2

Existem algumas opções diferentes para automatizar isso usando um stored procedure / TSQL ou um script powershell (eu recomendaria o script powershell). Se você quiser escrever sua própria automação para fazer isso, basicamente, você vai querer olhar para o " restaurar a lista de arquivos apenas "declaração que lhe dará uma lista de todos os arquivos em um determinado conjunto de backup (e, neste caso, descobrir qual filenumber é o backup diff mais recente para o backup completo que você tem).

Observe que, se você quiser restaurar o diferencial, terá que ter restaurado o backup FULL mais recente associado ao backup DIFF fornecido, para que isso funcione ou tenha deixado o banco de dados dev restaurado em um estado recuperável.

Por exemplo, isso funcionaria:

  • Restaurar backup completo a partir do domingo no DEV
  • Restaurar o backup diferencial de segunda-feira no DEV

isso também funcionaria:

  • Restaurar backup completo a partir do domingo no DEV
  • Restaurar o backup do diff de terça ou quarta ou quinta-feira no DEV

no entanto, isso não funcionará:

  • Restaurar backup completo a partir do domingo no DEV
  • Faça backup completo na segunda-feira no PROD
  • Restaurar o backup diferencial de terça-feira no DEV

Nesse caso final, você também deve restaurar o backup completo de segunda-feira no DEV antes de restaurar o backup do Diff de terça-feira. Há exceções (por exemplo, se o backup completo na segunda-feira foi um backup COPY_ONLY e não quebrou o cadeia de backup diff). Consulte este artigo para obter mais detalhes sobre o uso de backups DIFF e a cadeia de restauração necessária para uso.

    
por 23.11.2009 / 17:12
0

Você deve conseguir o registro do backup diferencial mais recente e o caminho dele para o tabelas de backup do msdb . Mas como mencionado acima, se você quiser restaurar um diff, você terá que restaurar o primeiro inteiro. Nesse ponto, é melhor você reconsiderar uma solução diferente, como o envio de logs ou a replicação de instantâneos, ou reconsiderar os requisitos.

    
por 24.12.2009 / 01:22