Wenn Sie versuchen, eine Datenbank mit dem folgenden Befehl zu spiegeln
ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ
Ich erhalte den folgenden Fehler
Meldung 1475, Ebene 16,
Status 105, Zeile 1 Die Datenbank "test0916aj8CJ" enthält möglicherweise protokollierte Massenänderungen, die nicht gesichert wurden. Erstellen Sie eine Protokollsicherung für die Hauptdatenbank oder die Primärdatenbank. Stellen Sie diese Sicherung dann entweder in der Spiegeldatenbank wieder her, um die Datenbankspiegelung zu aktivieren, oder in jeder sekundären Datenbank, damit Sie sie der Verfügbarkeitsgruppe hinzufügen können.
Kann dies ohne Sicherung der Datenbank erfolgen? Oder sollte ich sichern und dann das Backup verwerfen. Es ist für eine neu erstellte Datenbank, daher brauche ich das Backup an dieser Stelle sowieso nicht.
Ich habe folgendes versucht ...
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = N’test-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO
aber die obige Methode funktionierte auch nicht.
Vielen Dank
quelle
Antworten:
Es ist einfach, den Fehler, den Sie erhalten haben, zu wiederholen
Unten ist der Fehler, den Sie erhalten:
Lassen Sie uns verstehen, was dieser Fehler ist:
Sie haben Ihre Datenbank im vollständigen Wiederherstellungsmodus konfiguriert und denken, dass sich die Datenbank tatsächlich im vollständigen Wiederherstellungsmodus befindet.
Das obige ist nicht wahr. Wenn Sie nach dem Erstellen der Datenbank keine vollständige Sicherung durchführen, obwohl sich die Datenbank im vollständigen Wiederherstellungsmodus befindet, befindet sie sich in einer pseudo-EINFACHEN Wiederherstellung
Sie können dies leicht überprüfen, indem Sie dbcc dbinfo-> dbi_dbbackupLSNden Wert von 0:0:0(0x00000000:00000000:0000)oder das Skript von Paul Randal verwenden
Bearbeiten: Selbst eine erste vollständige Sicherung mit
COPY_ONLY
Option erstellt keine Sicherungskettedbcc dbinfo-> dbi_dbbackupLSNhat noch Wert von 0:0:0(0x00000000:00000000:0000). Dies bedeutet, dass sich die Datenbank immer noch im pseudo-einfachen Wiederherstellungsmodus befindet.
Was müssen Sie tun, um den oben genannten Fehler zu beheben?
Sie müssen eine vollständige Sicherung + eine Transaktionsprotokollsicherung auf der primären Datenbank erstellen und diese dann auf der sekundären Datenbank wiederherstellen
with norecovery
und dann der Datenbank in der AG-Gruppe oder in der Spiegelung beitreten.Als Randnotiz und für die Vollständigkeit, für Ihr Skript erzählt
backup to NUL
, lesen Sie diesen Blog - Post von Gail Shaw.quelle
Ich verstehe nicht, warum Sie verwenden
TO DISK = N’NUL’
:Wenn Sie dies tun, wird die Sicherung in
NUL
(dh = nirgendwo / nichts) gespeichert und kann nicht verwendet werden, da ihre Datei nicht vorhanden ist.Während
NUL
kann auch als Ziel für Log - Sicherungen verwendet wird, sollte es auch nicht verwendet werden, vor allem auf Prod - Servern , weil LOGs verloren gehen und die Backup - Kette unterbrochen wird. (~ ähnlich wie aSHRINKFILE
)Bevor Sie der Gruppe eine Datenbank hinzufügen, müssen Sie diese vorbereiten. Wenn Sie eine sekundäre Datenbank vorbereiten möchten, muss mindestens 1 Transaktionsprotokollsicherung erstellt und wiederhergestellt werden. Der Spiegel verwendet es, um herauszufinden, welche Transaktionen bereits in der sekundären Datenbank synchronisiert wurden und welche Transaktionen noch nicht mit der primären Datenbank synchronisiert sind.
Daher müssen Sie die Transaktionsprotokolle in der primären Datenbank sichern:
Die
COPY_ONLY
Option muss verwendet werden. Es stellt sicher, dass die Protokolle am Ende der LOG-Sicherung nicht abgeschnitten werden.Sie können eine Protokollsicherung jedoch nicht alleine wiederherstellen, dh ohne Sicherungskette (siehe auch Kin-Antwort). Dies bedeutet, dass die Transaktionsprotokollsicherung durchgeführt werden muss, nachdem eine vollständige Datenbanksicherung (+ ein optionales Differential, falls erforderlich) durchgeführt wurde.
Da die
COPY_ONLY
Option die Sicherungskette nicht unterbricht, wird auch keine Sicherungskette erstellt. DieCOPY_ONLY
Option kann nicht für die Datenbanksicherung verwendet werden.Backups in der Reihenfolge:
COPY_ONLY
OptionCOPY_ONLY
OptionDann muss die Datenbanksicherung auf der Sekundärseite wiederhergestellt werden (+ Differential).
Es muss mit der
NORECOVERY
Option wiederhergestellt werden, da Sie auch die LOG-Sicherung (en) wiederherstellen möchten, sobald die vollständige Sicherung wiederhergestellt wurde.Schließlich stellen Sie die LOG-Sicherung wieder her. Sie müssen die
NORECOVERY
Option weiterhin verwenden, da der Spiegel weiterhin Transaktionen wiederherstellt, sobald diese vorhanden sind.NORECOVERY
Option wieder herNORECOVERY
Option wieder herNORECOVERY
Option wieder herAuf dem Primärserver ausführen:
Führen Sie auf dem sekundären Server Folgendes aus:
Anschließend können Sie die neue sekundäre Datenbank zur Verfügbarkeitsgruppe hinzufügen ...
quelle