Eu tenho um banco de dados que possui um log de transações de 33 GB. É causado pelo fato de que o banco de dados está em modo de recuperação total e foi usado por mais de 5 anos antes do primeiro backup.
Eu quero truncar e reduzir o arquivo de log com o seguinte comando
Backup log dbname with truncate_only
go
DBCC shrinkfile('logicalfilename',100)
Eu quero saber depois de executar o comando acima, no futuro, poderei fazer uma restauração para um ponto no tempo entre o backup completo futuro 1 e 2?
Linha do tempo
- Backup pré-truncado
- truncar e encolher
- Backup completo futuro 1
- Backup completo futuro 2
Obrigado,
Sim. O que o preocupa é a Log Chain . A cadeia de logs começa em um backup completo. Portanto,
future full backup 1
você iniciará uma nova cadeia de log e, com backups de log de transações, poderá restaurar para um ponto no tempo.Referência BOL sobre como trabalhar com backups de log de transações
Quanto ao seu método inicial de obter seu log truncado, observe o seguinte de BOL em BACKUP :
E acho que nem é preciso dizer, mas vou ser explícito. Para não se deparar com esse mesmo problema, você precisa fazer backups de log de transações de rotina.
O principal problema aqui é que parece que você não está fazendo nenhum backup de log regular. A primeira coisa que eu faria é ter certeza de que você entende os modelos de recuperação do SQL Server . Principalmente, os bancos de dados
FULL
precisamBULKLOGGED
ter backups de log regulares.Eu recomendaria que, para limpar seu arquivo de log, primeiro faça um backup de log:
BACKUP LOG foo TO DISK='<backup file location>'
Quando isso estiver concluído, você poderá executar com segurança seu
DBCC SHRINKFILE
comando para redimensionar o arquivo de log adequadamente.Finalmente, você deve agendar backups de log regulares de seu banco de dados. Existem muitas ferramentas para fazer isso, sejam Planos de Manutenção ou Scripts de Manutenção de Ola Hallengren . Além disso, eu recomendo ler e entender o link de Thomas Stringer para BOL .
Acabei de descobrir os backups do SQL e tive uma pergunta muito semelhante.
Para restaurar para um ponto no tempo, você precisa:
Quando você corre
você não está fazendo backup do log, está apagando-o. Portanto, a única restauração que você pode fazer é a restauração do backup completo (ou diferencial).
A resposta de Mike Fal mostra como você pode configurar backups de log de transações, enquanto a resposta de Thomas explica a cadeia de log, mas senti a necessidade de postar exatamente o que você precisava para restaurar em um ponto no tempo, já que eu tinha a mesma pergunta na semana passada e estava muito confuso sobre o que exatamente eu precisava para fazer uma restauração pontual.