Frage SQL Server (2005/2008): Kürzt die vollständige Sicherung das Protokoll im vollständigen Wiederherstellungsmodus ab?


Ich habe gerade viele MSDN-Dokumente gelesen und denke, dass ich die verschiedenen Wiederherstellungsmodelle und das Konzept einer Backup-Kette verstehe. Ich habe noch eine Frage:

Wird bei einer vollständigen Datenbanksicherung das Transaktionsprotokoll abgeschnitten (im vollständigen Wiederherstellungsmodus)?

  • Wenn ja: Wo wird dies im MSDN erwähnt? Alles, was ich finden konnte war, dass nur BACKUP LOG das Log abschneidet.

  • Wenn nein: Warum? Da eine vollständige Datenbanksicherung eine neue Sicherungskette startet, ist es wichtig, dass die Transaktionen, die abgeschlossen wurden, beibehalten werden Vor die vollständige Sicherung aktiv im Protokoll?


40
2017-08-17 09:35


Ursprung




Antworten:


Nein - es ist definitiv nicht. Das nur Sache, die das Löschen / Abschneiden des Protokolls in den Wiederherstellungsmodellen FULL oder BULK_LOGGED ermöglicht, ist eine Protokollsicherung - keine Ausnahmen. Ich hatte dieses Argument vor einiger Zeit und postete einen langen und detaillierten Blog-Post mit einer Erklärung und einem Skript, mit dem du es dir selbst beweisen kannst Missverständnisse rund um die Log-und Log-Sicherungen: wie Sie sich überzeugen können.

Fühlen Sie sich frei, weitere Fragen zu verfolgen. Übrigens - siehe auch den langen Artikel, den ich für TechNet Magazine geschrieben habe Logging und Wiederherstellung in SQL Server verstehen.

Vielen Dank


42
2017-08-18 01:14



Vielen Dank Herr für Ihre SUPER ANTWORT und der Artikel hat eine Million Fragen in meinem Kopf beantwortet. - M.Ali


Bei einer vollständigen Sicherung wird das Protokoll NICHT abgeschnitten. Sie müssen eine Sicherungsprotokolloperation ausführen. Eine vollständige Sicherung setzt die Protokollkette NICHT zurück - das würde den Replikations- / Protokollversand usw. völlig zunichte machen.

Sie müssen sich genau ansehen, wie SQL Server Sicherungen durchführt, aber wissen, dass während des Fluges / lange laufende Transaktionen nicht in der Sicherung enthalten sind (andernfalls wird die Sicherung möglicherweise nie abgeschlossen). Daher ist es nicht richtig zu sagen, dass eine vollständige Sicherung eines Online-Datenbank wird garantiert, dass die nächste Log-Sicherung obsolet wird.

http://msdn.microsoft.com/en-us/library/ms175477.aspx


12
2017-08-17 12:14





Meinem Verständnis nach Das einzige, was das Transaktionsprotokoll abschneidet, ist eine Protokollsicherung.

Bei einer vollständigen Sicherung wird nur so viel von dem Protokoll kopiert, dass es konsistent ist, da es eine Weile dauert, bis der Sicherungsvorgang abgeschlossen ist. In diesem Zeitraum haben sich möglicherweise die kopierten Seiten geändert.

Sie benötigen weiterhin Ihre Protokollsicherungen für die Wiederherstellung nach Zeitpunkt.

Ich habe keine MSDN zu verknüpfen, aber ich kann Sie mit verknüpfen Paul Randals Blog, der ein Entwickler im SQL Server-Team war, schrieb DBCC CHECKDB und Teile von Books Online.

Er beantwortet auch Fragen zu diesem Forum, das wäre dann eine noch bessere Autorität als 2./3. Hand Informationen von mir :)


7
2017-08-18 00:36





Die Leute haben oft ein Missverständnis über die vollständige Sicherung und Log-Sicherungen. Damit das Backup funktioniert FULL Backup-Recovery-Modell, müssen die T-Logs verwendet werden, da während der Backups möglicherweise noch Transaktionen in der Datenbank laufen (außer Sie führen ein so genanntes COLD Sicherung beim Herunterfahren der Datenbank). Oracle verwendet dasselbe Konzept, wenn Sie über eine Datenbank verfügen ARCHIVELOG Modus. Die Reihenfolge eines Backups läuft darauf hinaus:

  1. Backup starten - alle Aktionen in realen Dateien anhalten und in t-logs schreiben.
  2. Backup durchführen - alle Transaktionen werden fortgesetzt, aber nicht in echte Dateien geschrieben, sondern in T-Logs geschrieben
  3. Backup beenden - Fortsetzen des Schreibens von Datenbanktransaktionen in reale Dateien.
  4. Spülen Sie bei Bedarf die Inhalte der T-Logs in die echten Dateien.

Aus diesem Grund werden T-Logs standardmäßig nicht gekürzt / verkleinert, da sie während der Backup-Phase einen wesentlichen Teil der Transaktion fortsetzen.


4
2018-01-27 10:27





Verwechseln Sie nicht das Abschneiden des Protokolls mit dem Schrumpfen des Protokolls.

  • TRUNCATE dient dazu, die Transaktionen im Protokoll vor dem letzten Prüfpunkt zu entfernen (der Prüfpunkt ist, wenn Transaktionen in die Datenbank selbst ausgelagert werden). Dies geschieht mit dem Befehl BACKUP.

  • Zum Verkleinern des Protokolls wird die tatsächliche Protokolldateigröße reduziert. Dies geschieht mithilfe von DBCC-Befehlen.


0
2017-09-03 00:58





Grundlegend müssen Sie das Transaktionsprotokoll nicht jedes Mal automatisch verkleinern, da Transaktionsprotokolle Platz zum Arbeiten benötigen und wenn Sie automatisch abschneiden, bleibt es fast gleich groß.


0
2017-10-07 08:09