Eu vi no thread do SQL Server Central Um backup completo trunca o log? esse backup completo não trunca o log:
Não. Nem os backups completos nem os diferenciais truncam o log de transações. - Lynn Pettis
Não - um backup completo não trunca o log. - Chad Crawford
Então, qual é a diferença entre backup completo e backup completo somente cópia?
Para o backup de log, há um backup somente de cópia que evita que a cadeia de logs seja interrompida sem truncar o log. Então, o que é backup completo somente cópia?
A principal diferença entre backups completos e somente cópia é se o LSN (Número de sequência de log) e, especificamente,
DatabaseBackupLSN
é atualizado.Quando você faz um backup completo, o
DatabaseBackupLSN
é atualizado. Depois de fazer o backup completo, se você fizer um backup diferencial, esse backup tem umDatabaseBackupLSN
que corresponde ao do backup completo e, portanto, o SQL pode vincular os dois (por exemplo, ele sabe desses LSNs que o diff seguiu o completo).O problema ocorre quando você tem backups agendados em execução, então você tem um backup completo inicial e, em seguida, uma sequência de diferenciais. Se você fizer um backup completo manualmente, ele atualizará o LSN e, a partir desse ponto, cada backup diferencial feito por meio de backup agendado fará referência a esse novo LSN e não ao original. No caso de precisar restaurar, você pode restaurar seu backup completo agendado, mas quando você tenta restaurar qualquer um dos backups diferenciais feitos após o trabalho manual, você descobre que ele falha, pois os LSNs não correspondem mais.
Com um backup somente cópia, ele não toca no
DatabaseBackupLSN
e, como tal, não interrompe essa cadeia de backups.Há uma boa descrição do problema, bem como por que tantas pessoas o interpretam mal em Breaking the Backup Chain – REDUX (Or Eating Crow) de Michael K. Campbell ( arquivo com todas as imagens ), que inclui bons guias visuais como este:
Para obter uma boa explicação sobre os quatro LSNs diferentes e como eles são usados, consulte Entendendo os números de sequência de log do SQL Server para backups , de Simon Liew.
A maneira de evitar o problema é não ter mais de uma coisa fazendo backups padrão de um banco de dados. Quaisquer backups ad hoc ou secundários devem ser feitos com a opção somente cópia, consulte Backups somente cópia (SQL Server) para obter detalhes completos, mas essencialmente você usa a opção "Copiar somente backup" no SSMS, via T-SQL especificado
WITH COPY_ONLY
no comando , ou com o PowerShell use o-CopyOnly
parâmetro.No mínimo, você precisa considerar backups diferenciais. A menos que seja usado somente cópia na íntegra, seu próximo backup de comparação será desativado. Backups Somente Cópia :
A única diferença entre full-copy e full-copy é que full-copy não quebra a cadeia diferencial. Nenhum deles quebra a cadeia de log, pois nenhum deles trunca o arquivo de log.
Suponha que temos um banco de dados com backups agendados. O backup completo é executado uma vez a cada 24 horas às 00:00, também temos backups diferenciais que são executados a cada 6 horas e backups de log de transações que são executados a cada hora. Então, e se precisarmos fazer um backup completo extra no meio do dia, para restaurar outro servidor? O que devemos fazer neste caso. Claro, podemos fazer um backup completo.
BACKUP DATABASE Test TO DISK = 'C:/Test.bak'
Mas quando você faz um backup de um banco de dados, há algumas alterações que influenciam como os backups a seguir serão restaurados (os backups diferenciais e os backups de log de transações influenciam como será a operação de restauração). Nesse caso, todos os backups diferenciais a seguir serão dependentes do último backup completo. Se o último backup completo for perdido, a restauração do banco de dados será impossível.
Mas como podemos fazer um backup que não afete os seguintes processos de backup ou restauração desse banco de dados. É aqui que os backups somente de cópia entram em ação.
BACKUP DATABASE Test TO DISK = 'C:\Test.bak' WITH COPY_ONLY
Quando você tem um backup completo e um conjunto de backups de arquivos de log, uma cadeia de logs é mantida usando o LSN (Log Sequence Number). Se você quiser fazer um backup sem quebrar a cadeia de logs, faça um backup somente de cópia.
Se você não fizer um backup somente de cópia, a cadeia de logs será interrompida e o backup que você fizer será o backup completo mais recente. Isso significa que os backups de log anteriores não podem ser aplicados aos backups completos recém-feitos. A cadeia de logs é mantida principalmente para recuperações pontuais ou cenários de envio de logs.
Por exemplo: digamos que você tenha um cenário de backup que faz backups completos a cada 6 horas (meia-noite, 6h, meio-dia, 18h) e registra backups a cada 15 minutos. Uma solicitação chega às 9h para que uma cópia do seu banco de dados seja colocada em um servidor de teste. Você deseja fazer o backup sem quebrar sua cadeia de logs ou interromper seus trabalhos de backup. É quando é feito um backup somente de cópia. O backup somente de cópia não interromperá seus conjuntos de backup regulares.
Um backup completo e um backup somente de cópia não interrompem a cadeia de logs. somente se você fizer um backup de tlog haverá uma incompatibilidade de LSN.