Dies ist mein erster DBA.SE-Beitrag. Bitte teilen Sie mir etwaige Fehler mit, danke!
Ich bin ein neuer DBA (kein IT-Profi, nur niemand im Unternehmen, der das macht). Je grundlegender die Erklärung, desto besser. Ich habe über Datenbanksicherungsstrategien gelesen (oder, wie ich gelernt habe, "Wiederherstellungsstrategien"). Ich verstehe die Funktionsweise von vollständigen, differenziellen und Transaktionsprotokollsicherungen, möchte jedoch wissen, warum eine differenzielle Sicherung nur auf der neuesten vollständigen Sicherung basieren kann.
Wenn sich bei einer differenziellen Sicherung alles seit der letzten vollständigen Sicherung geändert hat, warum kann die differenzielle Sicherung dann nicht auf einer Sicherung meiner Wahl basieren? Um es klarer zu machen, frage ich Sie, ob Sie die Basis angeben möchten, wenn das Backup erstellt wird, und nicht, wenn Sie es wiederherstellen. Ich gehe davon aus, dass Sie bei der Wiederherstellung die richtige Basis und das entsprechende Differential auswählen würden, um die Wiederherstellung durchzuführen (ohne ein Differential aus Basis B für die Wiederherstellung aus Basis A zu verwenden).
Was ist der Grund, warum diese Funktionalität nicht möglich ist? Ich denke, dass es einen Grund geben muss, ich weiß nur nicht, was es ist.
Hinweis: Ich verstehe, dass die Basis nicht angegeben werden kann, aber meine Frage ist, warum nicht ? (Ich habe auch kein Interesse an Diskussionen über "Warum würdest du?")
Analogie
Hier ist eine Analogie, wie ich eine differenzielle Sicherung verstehe:
Ich habe eine Excel-Datei mit einigen Daten in Zellen.
Am ersten Tag mache ich eine Kopie dieser Datei und speichere sie an einem anderen Ort (die "vollständige Sicherung").
Am zweiten Tag schaue ich mir die Datei an und vergleiche sie mit der Sicherungskopie, die ich am ersten Tag erstellt habe. Dabei stelle ich fest, welche Zellen sich geändert haben und welche neuen Werte sie haben (eine "differenzielle Sicherung"). Ich notiere nicht jede an einer Zelle vorgenommene Änderung, sondern nur deren endgültigen Wert. Wenn Zelle A1 als "Alfred" gestartet und in "Betty", "Charlie" und dann "Dave" geändert würde, würde ich nur feststellen, dass "A1 ist jetzt Dave".
Am dritten Tag vergleiche ich die aktuelle Datei erneut mit der Sicherungsdatei und notiere die Änderungen (eine weitere "differenzielle Sicherung" mit derselben Basis wie am zweiten Tag). Wiederum wurden nur die Endwerte pro Zelle zum beobachteten Zeitpunkt notiert, nicht alle Werte, die die Zelle den ganzen Tag über hatte.
An Tag 4 vergleiche ich erneut und bemerke Änderungen erneut. Fahren Sie mit Zelle A1 fort, und dort steht jetzt "Sarah", auch wenn es den ganzen Tag über 10 andere Namen waren. Ich stelle nur fest, dass "Jetzt ist A1 Sarah".
Am 5. Tag wird meine Akte durcheinander gebracht. Ich schaue mir also die Sicherungskopie an, die ich an Tag 1 erstellt habe, dann die Endzustände, die an Tag 4 notiert wurden, und wende die Änderungen an, die an der Sicherungskopie notiert wurden. Jetzt habe ich die Datei so "wiederhergestellt", wie sie an Tag 4 war Ich schaue mir also die Sicherung an, die am ersten Tag erstellt wurde, und stelle fest, dass die Zelle A1 am vierten Tag als "Sarah" endete, und ändere die Sicherungszelle A1 in "Sarah".
Warum wäre es wichtig, wenn ich am zweiten Tag eine weitere Sicherungskopie ("vollständig") der Datei erstellt hätte? Warum ist es nicht möglich, die Datei am 3. oder 4. Tag mit der am 1. Tag erstellten Kopie zu vergleichen (lesen, "differenziell sichern")? Nach meinem Verständnis würde SQL Server von mir verlangen, dass ich (wenn ich eine andere differenzielle Sicherung mache) mit einer vollständigen Sicherung vergleiche, die am zweiten Tag erstellt wurde (wenn eine erstellt wurde) - keine andere Option.
COPY_ONLY
der Fall ist. Wenn das OP an Tag 1 eine regelmäßige vollständige Sicherung undCOPY_ONLY
an Tag 2 eine vollständige Sicherung durchführen würde, welche Probleme würden durch das Anwenden eines späteren Differentials von derselben Basis verursacht zum tag 2 backup?