Ich habe eine Datenbank mit einer 350-MB- Datendatei (.mdf) und einer 4,9-GB-Protokolldatei (.ldf). Das Wiederherstellungsmodell ist auf festgelegt FULL
.
Wenn ich versuche, die Protokolldatei zu verkleinern, wird sie nicht verkleinert.
Ich weiß, dass das Verkleinern einer Datenbank nicht gut ist und nicht durchgeführt werden sollte. Aber ich versuche immer noch, es zu tun, um die Protokolldatei zu verkleinern.
Als ich rannte
DBCC SQLPerf(logspace)
Ich habe festgestellt, dass die Protokollgröße 4932 MB und der verwendete Protokollspeicher 98,76% beträgt !
Dann habe ich diesen Befehl ausprobiert
USE <databasename>;
DBCC loginfo;
Jetzt haben fast alle VLFs den Status 2, was bedeutet, dass alle verwendet werden.
Ich habe versucht, eine Protokollsicherung zu erstellen und die Protokolldatei anschließend zu verkleinern. Durch das Schrumpfen wurde die Größe nicht verringert.
Ich habe das Wiederherstellungsmodell auf geändert SIMPLE
und erneut versucht, es zu verkleinern, aber das hat auch nicht geholfen.
Ich habe nach offenen Transaktionen gesucht
DBCC opentran (database);
und festgestellt, dass keine Transaktion jetzt geöffnet ist.
Was hindert mich daran, die Protokolldatei zu verkleinern? Wie kann ich das lösen?
quelle
log_reuse_wait_desc
gabACTIVE_TRANSACTION
. Sobald die Transaktion abgeschlossen war, funktionierte der Shrink einwandfrei.Schritte zum Verkleinern des Protokolls werden sein
Sichern Sie das Transaktionsprotokoll über SSMS oder T-SQL, und führen Sie dann eine Verkleinerung durch
Befehle für SSMS befinden sich unter den Tasks, wenn Sie mit der rechten Maustaste auf den Datenbanknamen klicken
Sie müssen dies wahrscheinlich mehrmals tun
Wenn eine Transaktion oder ein Auftrag die Aktion blockiert, verwenden Sie die Aktivitätsüberwachung, um den Prozess zu identifizieren und abzubrechen, oder verwenden Sie die Aktivitätsüberwachung des SQL Agent-Auftrags, um den Auftrag zu beenden.
Quelle: http://support.microsoft.com/kb/907511
quelle
Lesen Sie, wie Sie das SQL Server-Protokoll verkleinern, um zu erfahren, wie die Zirkularität des Protokolls das Verkleinern nach dem Abschneiden verhindern kann. Möglicherweise protokollieren Sie den letzten LSN- Punkt in einer VLF, die sich am Ende der LDF befindet. Sie müssen das Protokoll entgegen der Intuition weiterentwickeln, indem Sie Protokollschreibvorgänge generieren, damit es verkleinert werden kann.
quelle
Sie müssen zuerst eine Sicherung erstellen, abhängig vom für die Datenbank eingerichteten Sicherungsmodell, bevor Sie die Datenbank verkleinern können.
Sie können dies versuchen:
Sie können dies auch über SSMS tun und die verfügbaren grafischen Tools verwenden (Details finden Sie hier: http://msdn.microsoft.com/en-us/library/ms187510.aspx ).
Sobald Sie Ihre Datenbank gesichert haben, können Sie sie komprimieren. Das Verkleinern der Datenbank ist jedoch keine gute Idee, da eine starke Indexfragmentierung auftritt und die Suche nach Daten langsam wird.
Hoffe das hilft.
quelle
Ich habe festgestellt, dass ich zwei oder drei Sicherungen sowohl der Datenbank als auch des Transaktionsprotokolls durchführen muss, damit das Transaktionsprotokoll tatsächlich verkleinert wird. Ich habe eine Datenbank, die mit dem vollständigen Wiederherstellungsmodell erstellt wurde. Jede Nacht werden Sicherungen der Datenbank und des Transaktionsprotokolls durchgeführt, aber zwangsläufig scheint das Transaktionsprotokoll über 2-3 Wochen kontinuierlich zu wachsen. Wenn der verbleibende Speicherplatz 1 GB erreicht, wird das Transaktionsprotokoll etwa 30 GB umfassen. Ich habe die von Microsoft empfohlenen Schritte befolgt und nach der vierten oder fünften Iteration der Sicherung der Datenbank und des Transaktionsprotokolls wird das Transaktionsprotokoll endlich seinen zusätzlichen Speicherplatz freigeben und verkleinern. Dann gehe ich zurück und lösche die mehreren Backups, die ich erstellt habe.
quelle
Meine Arbeit für die Replikation, die das Verkleinern der Protokolldatei blockiert, ist:
In meinem Fall hat es funktioniert. Nach dem Bringen von DB Online wurde automatisch ein Log angelegt und seine Größe betrug 512kb statt 70GB. Dies ist jedoch nur eine Problemumgehung. Das Root-Problem ist nicht behoben. In meinem Fall verwenden wir die Replikation.
quelle