Este é o meu primeiro post no DBA.SE, por favor, informe-me de quaisquer erros, obrigado!
Eu sou um novo DBA (não um profissional de TI, apenas mais ninguém na empresa para fazê-lo); portanto, quanto mais básica a explicação, melhor. Eu tenho lido sobre estratégias de backup de banco de dados (ou, como aprendi a chamá-las, "estratégias de restauração"). Entendo o que os backups completos, diferenciais e do log de transações fazem, mas quero saber por que um backup diferencial pode ser baseado apenas no backup completo mais recente.
Se um backup diferencial é tudo o que mudou desde o último backup completo, por que o diferencial não pode se basear em nenhum backup de minha escolha? Para ser mais claro, estou perguntando sobre a especificação da base quando o backup é feito , e não durante a restauração. Estou assumindo que, ao restaurar, você escolheria a base correta e o diferencial correspondente para executar a restauração (não usando um diferencial feito da base B para restaurar da base A).
Qual é o motivo que impede que essa funcionalidade seja possível? Eu acho que deve haver uma razão, eu simplesmente não sei o que é.
Nota: Entendo que a base não pode ser especificada, mas minha pergunta é por que não ? (Também não estou interessado na discussão sobre "por que você faria isso?")
Analogia
Aqui está uma analogia de como eu entendo um backup diferencial:
Eu tenho um arquivo do Excel com alguns dados nas células.
No primeiro dia, eu faço uma cópia desse arquivo e o armazeno em outro lugar (o "backup completo").
No dia 2, olho para o arquivo e o comparo com a cópia de backup que fiz no dia 1 e observo todas as células que foram alteradas e quais são seus novos valores (um "backup diferencial"). Não estou anotando todas as alterações feitas em uma célula, apenas qual é o seu valor final. Se a célula A1 começou como "Alfred", mudou para "Betty", "Charlie" e depois "Dave", eu apenas notaria que "A1 agora é Dave".
No dia 3, comparo o arquivo atual com o arquivo de backup novamente e observo as alterações (outro "backup diferencial" com a mesma base do dia 2). Novamente, apenas observando os valores finais por célula no momento observado, nem todos os valores que a célula esteve ao longo do dia.
No dia 4, comparo novamente e observo as alterações novamente. Continuando com a célula A1, agora diz "Sarah", mesmo que tenham sido outros 10 nomes ao longo do dia, e tudo o que observo é "Agora A1 é Sarah".
No dia 5, meu arquivo fica bagunçado; então, olho para a cópia de backup que fiz no dia 1, depois para os estados finais anotados no dia 4 e aplico as alterações observadas na cópia de backup e agora tenho o arquivo "restaurado" como estava no dia 4 Então, eu olho para o backup feito no dia 1, vejo que no dia 4 a célula A1 terminou como "Sarah" e altero a célula de backup A1 para "Sarah".
Por que importaria se eu tivesse feito outra cópia de backup ("cheia") do arquivo no dia 2? Por que ainda não seria possível comparar (ler, "fazer um backup diferencial de") o arquivo no dia 3 ou 4 com a cópia feita no dia 1? Pelo que entendi, o SQL Server exigiria que eu comparasse (ao fazer outro backup diferencial) com um backup completo feito no dia 2 (se um tivesse sido feito) - nenhuma outra opção.
COPY_ONLY
- Se o OP fizesse um backup completo regular no dia 1 e umCOPY_ONLY
backup completo no dia 2, que problemas seriam causados pela aplicação de um diferencial posterior nessa mesma base para o dia 2 de backup?