it-swarm.com.de

EINFACHES oder VOLLSTÄNDIGES Wiederherstellungsmodell für Datenbanken?

Wann sollte ich das vollständige Wiederherstellungsmodell verwenden und wann sollte ich das einfache Wiederherstellungsmodell für Datenbanken verwenden?

Ich habe immer das vollständige Wiederherstellungsmodell verwendet, da es die Standardeinstellung ist, aber heute ist dieser Fehler aufgetreten:

Microsoft OLE DB-Anbieter für SQL Server (0x80040E14) Das Transaktionsprotokoll für die Datenbank 'DATABASE NAME' ist voll. Informationen dazu, warum Speicherplatz im Protokoll nicht wiederverwendet werden kann, finden Sie in der Spalte log_reuse_wait_desc in sys. Datenbanken

Die spezifische Datenbank ist tatsächlich eine der kleinsten und inaktivsten Datenbanken auf meinem Server, daher habe ich keine Ahnung, wie das Protokoll in dieser Datenbank voll sein kann, und nicht in den anderen.

Um das Protokoll zu verkleinern und die Datenbank wieder zugänglich zu machen, habe ich das Wiederherstellungsmodell von FULL in SIMPLE geändert und das Protokoll der logischen Datei mit dem folgenden Befehl verkleinert

alter database myDbName SET recovery simple
go
dbcc shrinkfile('LOG FILE LOGICAL NAME', 100)
go

Es hat geholfen, aber jetzt muss ich verstehen WARUM es hat geholfen, WIE diese Situation gestartet und WIE um dies in Zukunft zu verhindern?

EDIT :

Jede Nacht um 1 Uhr führen wir eine Skriptsicherung für jede Datenbank auf dem Server durch. Dies geschieht durch ein 31-zeiliges Skript, bei dem der wichtigste Teil ist

set @Filename = 'D:\backup\' + convert(varchar, getDate(), 112) + ' - ' + @DBName + '.bak'
set @Description = 'Full backup of database ' + @Filename
BACKUP DATABASE @DBName TO DISK = @Filename WITH INIT , NOUNLOAD , NAME = @Description, NOSKIP , STATS = 10, NOFORMAT

Wird das neue Wiederherstellungsmodell und der Datenbankschrumpf einen Konflikt mit diesem Skript darstellen?

Wir führen keine andere Art der Sicherung der Datenbanken durch und daher auch nicht der Transaktionsprotokolle.

39
Behrens

Wann sollte ich das vollständige Wiederherstellungsmodell verwenden und wann sollte ich das einfache Wiederherstellungsmodell für Datenbanken verwenden?

Sie sollten das vollständige Wiederherstellungsmodell verwenden, wenn Sie eine Wiederherstellung Ihrer Datenbank zu einem bestimmten Zeitpunkt benötigen. Sie sollten ein einfaches Wiederherstellungsmodell verwenden, wenn Sie keine Wiederherstellung Ihrer Datenbank zu einem bestimmten Zeitpunkt benötigen und wenn die letzte vollständige oder differenzielle Sicherung als Wiederherstellungspunkt ausreicht. (Hinweis: Es gibt ein anderes Wiederherstellungsmodell, das massenprotokolliert ist. Weitere Informationen zum massenprotokollierten Wiederherstellungsmodell finden Sie unter diese Referenz )

Microsoft OLE DB-Anbieter für SQL Server (0x80040E14) Das Transaktionsprotokoll für die Datenbank 'DATABASE NAME' ist voll. Informationen dazu, warum Speicherplatz im Protokoll nicht wiederverwendet werden kann, finden Sie in der Spalte log_reuse_wait_desc in sys. Datenbanken

Der Grund, warum Sie diesen Fehler erhalten haben (höchstwahrscheinlich), ist, dass Sie Ihr Transaktionsprotokoll nicht gesichert haben. Wenn es nicht gesichert wird, wird die Transaktionsprotokolldatei weiterhin physisch vergrößert (vorausgesetzt, das automatische Wachstum ist aktiviert und die maximale Größe erlaubt dies), da keiner der "Teile" des Transaktionsprotokolls (virtuelle Protokolldateien) wiederverwendet werden kann. Es kann diese VLFs nur zur Wiederverwendung markieren und die "Wrap-Around" -Natur des Transaktionsprotokolls zulassen, wenn Sie eine Transaktionsprotokollsicherung durchführen (und einige andere Anforderungen, wie z. B. keine aktiven Transaktionen, einige Replikationsaspekte usw.).

Um das Protokoll zu verkleinern und die Datenbank wieder zugänglich zu machen, habe ich das Wiederherstellungsmodell von FULL in SIMPLE geändert und das Protokoll der logischen Datei mit dem folgenden Befehl verkleinert

......

Es hat geholfen, aber jetzt muss ich verstehen, WARUM es geholfen hat, WIE diese Situation begann und WIE dies in Zukunft verhindert werden kann.

Dies hat Ihnen geholfen, da Sie durch das Einstellen Ihrer Datenbank auf das einfache Wiederherstellungsmodell SQL Server mitgeteilt haben, dass Sie sich nicht mehr um die Wiederherstellung zu einem bestimmten Zeitpunkt kümmern und sicherstellen müssen, dass virtuelle Protokolldateien nicht mehr beibehalten und als aktiv markiert werden müssen. Jetzt markiert ein Checkpoint-Prozess diese VLFs als inaktiv.

Auszug/Zitat aus diese MSDN-Referenz :

Unter dem einfachen Wiederherstellungsmodell schneidet ein automatischer Prüfpunkt den nicht verwendeten Abschnitt des Transaktionsprotokolls ab, es sei denn, ein Faktor verzögert das Abschneiden des Protokolls. Im Gegensatz dazu verursachen automatische Prüfpunkte bei den vollständigen und massenprotokollierten Wiederherstellungsmodellen nach dem Einrichten einer Protokollsicherungskette keine Protokollabschneidung.

Dann haben Sie eine physische Datenbankdatei verkleinert, und da in Ihrem Transaktionsprotokoll jetzt freier Speicherplatz vorhanden war, konnte die NTFS-Datei physisch verkleinert werden.

Lesen lohnt sich für:

  1. Wiederherstellungsmodelle
  2. Verwalten von Transaktionsprotokollen (Gail Shaw)
  3. Faktoren, die das Abschneiden von Protokollen verzögern können

BEARBEITEN nach dem Bearbeiten :

Wird das neue Wiederherstellungsmodell und der Datenbankschrumpf einen Konflikt mit diesem Skript darstellen?

Dieser Befehl BACKUP DATABASE Funktioniert mit beiden Wiederherstellungsmodellen. Was das routinemäßige Verkleinern der Datenbank betrifft ... TUN SIE ES NICHT !!!! Im Ernst, passen Sie die Größe Ihrer Datenbank entsprechend an und verwenden Sie die vollständige Wiederherstellung Das Modell stellt dann sicher, dass Sie routinemäßige und häufige Transaktionsprotokolldateien ausführen, um nicht nur die Transaktionsprotokollgröße in Schach zu halten, sondern auch Wiederherstellungspunktobjekte zu erfüllen.

Wir führen keine andere Art der Sicherung der Datenbanken durch und daher auch nicht der Transaktionsprotokolle.

Wenn Ihre Datenbank das vollständige Wiederherstellungsmodell verwendet, sollten Sie ja Transaktionsprotokollsicherungen durchführen. Wenn sich Ihre Datenbank in einer einfachen Wiederherstellung befindet, können Sie physisch keine Transaktionsprotokollsicherung durchführen.

Für welches Wiederherstellungsmodell (einfach oder vollständig) können wir diese Entscheidung nicht für Sie treffen. Nur Sie, Ihr Geschäftsteam und Ihre SLAs können.

62
Thomas Stringer