Dies ist eine Folgefrage zu einer früheren Frage, warum ich die Protokolldatei in der Hauptdatenbank nicht verkleinern konnte.
Um es kurz zu machen, ich habe die Datenbankspiegelung eingerichtet, aber vergessen, sicherzustellen, dass der Job, der das Transaktionsprotokoll gesichert hat, erneut ausgeführt wurde und das Transaktionsprotokoll auf fast 60 GB angewachsen ist.
Da die Spiegelung eingerichtet wurde, wurde diese Vergrößerung auf dem gespiegelten Server dupliziert und nahm schließlich den gesamten Speicherplatz in Anspruch und machte die Spiegeldatenbank unbrauchbar.
Bei dieser Frage zur Pflege von Transaktionsprotokollen in einer Spiegeldatenbank können Sie das Protokoll auf dem Spiegel nicht sichern. Wenn Sie jedoch speziell in Kommentaren zum Verkleinern einer überwucherten Protokolldatei in einer Spiegeldatenbank gefragt werden, wurde ein Kommentar hinterlassen
Eine Möglichkeit, dies zu tun, besteht darin, ein Failover auf die gespiegelte Datenbank durchzuführen und dort zu verkleinern. Testen Sie dies gründlich in einer Umgebung ohne Produktion, um sicherzustellen, dass es das gewünschte / erwartete Verhalten aufweist.
Dies scheint darauf hinzudeuten, dass es andere Möglichkeiten gibt, die Protokolldatei auf einem Spiegel zu verkleinern, und dass diese Methode auf einem Produktionsserver möglicherweise nicht unbedingt sicher ist.
Gibt es eine Möglichkeit, die Transaktionsprotokolldatei auf einem Datenbankspiegel sicher zu verkleinern?
quelle
Antworten:
Der
DBCC SHRINKFILE
Befehl wird vom Prinzipal in die gespiegelte Datenbank gespiegelt. Hier ist ein Beweis.Erstellen Sie eine Beispieldatenbank auf dem Principal:
Erstellen Sie dieselbe Datenbank aus einer Sicherung mit
NORECOVERY
:Richten Sie Ihre Spiegelungssitzung nach Ihren Wünschen ein.
Auf der Prinzipaldatenbank Blick auf die Datenbank Dateigrößen:
Meine Ergebnismenge sieht folgendermaßen aus:
Erstellen Sie in der Spiegeldatenbank einen Schnappschuss und sehen Sie sich dieselben Informationen an:
Meine Ergebnismenge sieht folgendermaßen aus:
Erweitern Sie nun die Transaktionsprotokolldatei in der Hauptdatenbank (ich habe sie auf 1 GB gebracht):
Wenn wir uns die Transaktionsprotokollgröße der Hauptdatenbank ansehen, sehen wir jetzt die angepasste Größe:
Meine Ergebnismenge sieht folgendermaßen aus:
Erstellen Sie einen weiteren Snapshot in der gespiegelten Datenbank und überprüfen Sie dort die Größe der Transaktionsprotokolldatei:
Meine Ergebnismenge sieht folgendermaßen aus:
Machen Sie jetzt das
DBCC SHRINKFILE
auf dem Prinzip :Meine Ergebnismenge ist folgende:
Erstellen Sie einen dritten und letzten Schnappschuss in der gespiegelten Datenbank und sehen Sie sich die Größe an:
Und ich bekomme folgende Ergebnismenge:
Wie Sie hier sehen können, wird der
DBCC SHRINKFILE
Befehl tatsächlich in die Spiegeldatenbank gespiegelt.quelle
DBCC SHRINKFILE
. Wenn Sie Ihre Spiegelsitzung reparieren können, ohne die Spiegelung in dieser Datenbank zu entfernen, müssten dort weitere Untersuchungen durchgeführt werden. Es scheint, als wäre es wegen der Dateigröße angehalten worden. Haben Sie versucht, den Partner wieder aufzunehmen?