Não tenho certeza se esse cenário de restauração de dados é possível. Cenário:
Eu tenho uma tabela com algumas 100 inserções de dados todos os dias. Eu não percebi que por algum motivo (identificado posteriormente como um bug no código), os dados estavam sendo excluídos no mesmo dia sempre que um novo registro que não estava relacionado a esse processo entra na tabela. Portanto, não há um horário específico em que essa exclusão aconteça. Identificamos isso depois de uma semana (ontem), e adicionei um gatilho de exclusão para essa tabela e armazena os dados em outra tabela.
O problema é como posso restaurar os dados excluídos da semana passada. Eu tenho backups de log de transações que foram feitos a cada hora. Sem saber a hora específica em que os dados foram excluídos, como posso fazer a recuperação pontual. Qualquer estratégia de restauração.?
Seria um processo árduo, mas você pode usar
RESTORE WITH STANDBY
para uma instância diferente. Depois que cada log for restaurado, você poderá ler os dados no banco de dados. Não há garantia de que as linhas que você está procurando não foram adicionadas e excluídas no mesmo backup de log de transações.RESTAURAR Declarações
Em uma nota lateral ( em referência à sua declaração sobre backups de log de transações por hora ), essa situação é uma das razões pelas quais eu gosto de fazer backup de logs de transações a cada minuto. Sim, realmente. para meus bancos de dados críticos.
Aqui está um exemplo de uso do
WITH STANDBY
.Pelo que parece, você não tem uma única vez desconhecida em que os dados foram excluídos, você tem várias vezes que os dados teriam sido excluídos.
Mas boas notícias! Você tem backups de log que cobrem o período de tempo em questão, então não é impossível. Se eu fosse confrontado com seus requisitos, eu faria o seguinte. É totalmente possível fazer o script desse processo, mas as etapas básicas são:
Decida em um período de tempo para o qual você deseja restaurar. A cada minuto, a cada 5 minutos, etc. Você pode ir menor, a cada segundo, por exemplo, mas isso tornará o resto doloroso.
Restaure o backup completo para um novo banco de dados (ou mesmo banco de dados em outro servidor).
Copie o conteúdo da sua tabela para uma tabela diferente em outro banco de dados, exporte, seja o que for.
Restaure o backup completo, + primeiro log com a parada na hora que você quiser.
GOTO Etapa 3 até que você tenha todos os dados desejados.
Pode haver ferramentas de terceiros que podem fazer isso para você também, eu sei que algumas são capazes de fazer restaurações no nível da tabela a partir de backups nativos. Você pode misturar essa estratégia com o RESTORE WITH STANDBY que Scott Hodgin mencionou também.
Oi eu criei o script para restaurar a cada 1 minuto e depois copie os dados para outra tabela em outro banco de dados.
Eu uso um cursor para percorrer diferentes arquivos de log de transações e, em seguida, um loop while para parar a cada 1 minuto e, em seguida, restaurar uma tabela.