Como restaurar um banco de dados do SQL Server do backup completo da última noite e do arquivo de log de transações ativo?

3

Foi-me dito que é uma boa prática manter seus arquivos de dados e arquivos de log do SQL Server em discos fisicamente separados, pois isso permitirá que você recupere seus dados até o ponto de falha se a unidade de dados falhar.

Então ... vamos dizer que mydata.mdf está na unidade D :, e mydata_log.ldf está na unidade E :, e é 16:45, e a unidade D: acabou de morrer horrivelmente.

Então - eu tenho o backup completo da noite passada (mydata.bak). Eu tenho backups de log de transações por hora que trarão os dados de volta para as 16:00 ... mas isso significa que perderei 45 minutos de atualizações.

Ainda tenho mydata_log.ldf na unidade E:, que deve conter TODAS as transações que foram confirmadas até o ponto em que a unidade falhou.

Como faço para recriar o banco de dados e restaurar dados do arquivo de backup e do log de transações ao vivo, para não perder nenhuma atualização? Isso é possível?

    
por Dylan Beattie 04.01.2011 / 17:46

3 respostas

3

Para completar a resposta de imtiaz:

A primeira coisa a fazer é imediatamente tentar fazer o backup do final do log. Mesmo com um banco de dados corrompido (status de suspeito), você poderá fazer o backup do final do registro.

Exemplo:

BACKUP LOG db_name TO DISK = 'C:\TESTS\db_name_log.trn' WITH INIT, NO_TRUNCATE;

Restaurar backup completo (opção NO RECOVERY) + restaurar 16:00 Backup de log (opção NO RECOVERY) + restaurar backup de cauda (opção RECOVERY) - > você é capaz de restaurar o banco de dados para o último ponto de falha.

    
por 04.01.2011 / 18:36
2

Você precisa ter um backup final do arquivo de log (dependendo da versão do sql). Se você pode fazer backup da cauda, então você está pronto! Se você não puder, terá que lidar com a perda de dados e aumentar a frequência de backups de log. Eu apóio o meu a cada 5 minutos, devido aos requisitos de negócios.

Do BooksOnline: BACKUP LOG database_name TO COM CONTINUE_AFTER_ERROR

Se o banco de dados estiver danificado, por exemplo, se o banco de dados não for iniciado, um backup de log final terá êxito somente se os arquivos de log não estiverem danificados, o banco de dados estiver em um estado que ofereça suporte a backups de log final e não contém alterações registradas em massa.

    
por 04.01.2011 / 18:14
0

Primeiro você precisa criar um backup de log de cauda (para evitar a perda de dados), executando o comando abaixo

BACKUP LOG <database_name> TO <backup_device> 
WITH NORECOVERY, NO_TRUNCATE;

Em seguida, restaure executando abaixo do comando

RESTORE DATABASE <database_name> FROM <backup_device> 
WITH NORECOVERY;
    
por 08.03.2016 / 07:09