Questo è il mio primo post su DBA.SE, quindi per favore informatemi di eventuali errori, grazie!
Sono un nuovo DBA (non un professionista IT, solo nessun altro in azienda per farlo), quindi più la spiegazione è basilare, meglio è. Ho letto delle strategie di backup del database (o, come ho imparato a chiamarle, "ripristinare le strategie"). Comprendo cosa fanno i backup completi, differenziali e dei registri delle transazioni, ma voglio sapere perché un backup differenziale può essere basato solo sul backup completo più recente.
Se un backup differenziale è tutto ciò che è cambiato dall'ultimo backup completo, perché il differenziale non può essere basato su alcun backup di mia scelta? Per essere più chiari, sto chiedendo di specificare la base quando viene eseguito il backup , non durante il ripristino. Suppongo che durante il ripristino si scelga la base corretta e il differenziale corrispondente per eseguire il ripristino (non utilizzare un differenziale creato dalla base B per ripristinare dalla base A).
Qual è il motivo che impedisce che questa funzionalità sia possibile? Immagino che ci debba essere un motivo, semplicemente non so cosa sia.
Nota: capisco che la base non può essere specificata, ma la mia domanda è: perché no ? (Inoltre, non sono interessato alla discussione sul "perché dovresti?")
Analogia
Ecco un'analogia per come capisco un backup differenziale:
Ho un file Excel con alcuni dati nelle celle.
Il primo giorno, faccio una copia di questo file e lo memorizzo altrove (il "backup completo").
Il giorno 2, guardo il file e lo confronto con la copia di backup che ho fatto il giorno 1, e noto tutte le celle che sono cambiate e quali sono i loro nuovi valori (un "backup differenziale"). Non sto notando ogni modifica apportata a una cella, solo quale sia il suo valore finale. Se la cella A1 fosse iniziata come "Alfred", cambiata in "Betty", "Charlie", quindi "Dave", noterei solo che "A1 ora è Dave".
Il giorno 3, confronto nuovamente il file corrente con il file di backup e prendo atto delle modifiche (un altro "backup differenziale" con la stessa base del giorno 2). Ancora una volta, notando solo i valori finali per cella al momento osservato, non tutti i valori che la cella è stata durante il giorno.
Il giorno 4, confronto nuovamente e prendo atto delle modifiche. Continuando con la cella A1, ora dice "Sarah", anche se c'erano altri 10 nomi durante il giorno, e tutto ciò che noto è "Ora A1 è Sarah".
Il giorno 5, il mio file viene incasinato; quindi, guardo la copia di backup che ho fatto il giorno 1, quindi gli stati finali annotati il giorno 4, e applico le modifiche annotate alla copia di backup e ora ho il file "ripristinato" come era il giorno 4 Quindi, guardo il backup effettuato il giorno 1, vedo che il giorno 4 la cella A1 è terminata come "Sarah" e cambio la cella di backup A1 in "Sarah".
Perché dovrebbe importare se avessi fatto un'altra copia di backup ("completa") del file il giorno 2? Perché non sarebbe ancora possibile confrontare (leggere, "eseguire un backup differenziale di") il file il giorno 3 o 4 con la copia fatta il giorno 1? A quanto ho capito, SQL Server mi richiederebbe di confrontare (quando si esegue un altro backup differenziale) con un backup completo eseguito il giorno 2 (se ne fosse stato effettuato uno) - nessun'altra opzione.
COPY_ONLY
- Se l'OP dovesse eseguire un backup completo regolare il giorno 1 e unCOPY_ONLY
backup completo il giorno 2, quali problemi sarebbero causati dall'applicazione di un differenziale successivo dalla stessa base al backup del giorno 2?