Verkleinern die Transaktionsprotokolldatei in SQL Server 2005

Zusammenfassung

Sie können in Microsoft SQL Server 2005 eine Transaktionsprotokolldatei in einer Datenbank, entfernen Sie nicht verwendete Seiten verkleinern. Das Datenbankmodul verwendet Speicherplatz effizient wieder. Wenn eine Transaktionsprotokolldatei unerwartet stark wächst, müssen Sie manuell die Transaktionsprotokolldatei verkleinern.

Dieser Artikel beschreibt, wie die Anweisung DBCC SHRINKFILE zum Verkleinern der Transaktionsprotokolldatei im Rahmen des vollständigen Wiederherstellungsmodells in einer SQL Server 2005-Datenbank. Die Methode zum Verkleinern der Transaktionsprotokolldatei in SQL Server 2005 abweichen von der Methode, die zum Verkleinern der Transaktionsprotokolldatei in SQL Server 2000 verwenden. Weitere Informationen zum Verkleinern der Transaktionsprotokolldatei in SQL Server 2000 klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

272318 Verkleinern des Transaktionsprotokolls in SQL Server 2000 mit DBCC SHRINKFILE

Weitere Informationen

In SQL Server 2005 versucht ein Verkleinerungsvorgang (DBCC SHRINKFILE), die angegebene Transaktionsprotokolldatei sofort auf die angeforderte Größe zu verkleinern. Um die Rahmen des vollständigen Wiederherstellungsmodells manuell verkleinern, müssen Sie zunächst die Transaktionsprotokolldatei sichern. Verwenden Sie dann die Anweisung DBCC SHRINKFILE die Transaktionsprotokolldatei verkleinern.

Normalerweise ist Verkleinern der Transaktionsprotokolldatei in SQL Server 2005 schneller als der Transaktionsprotokolldatei in SQL Server 2000. Der Grund ist, dass SQL Server 2005 Log Manager erstellt oder inaktiven virtuellen Protokolldateien wiederverwendet anhand der physischen Speicherreihenfolge orientiert. Daher wird der inaktive Teil der Transaktionsprotokolldatei in der Regel am Ende der Datei.

Beispielsweise kann die Transaktionsprotokolldatei 100 virtuelle Protokolldateien haben und nur 2 virtuelle Protokolldateien verwendet. SQL Server 2000 speichern möglicherweise die erste verwendete virtuelle Protokolldatei am Anfang der Transaktionsprotokolldatei und die zweite virtuelle Protokolldatei in der Mitte der Transaktionsprotokolldatei. Um die Transaktionsprotokolldatei auf nur 2 virtuelle Protokolldateien zu verkleinern, füllt SQL Server den verbleibenden Teil der zweiten virtuellen Protokolldatei mit dummy-Protokolleinträgen. SQL Server verschiebt den Anfang des logischen Protokolls an die nächste verfügbare virtuelle Protokolldatei, die von der Protokoll-Manager angegeben. Wahlweise kann eine virtuelle Protokolldatei in der Mitte der Transaktionsprotokolldatei vor der letzten aktiven virtuellen Protokolldatei erstellen. In diesem Fall müssen Sie mehrere Protokollsicherungsvorgänge und Verkleinerungsvorgänge verwenden, um die Transaktionsprotokolldatei erfolgreich auf 2 virtuelle Protokolldateien zu verkleinern. Im schlimmsten Fall dabei möglicherweise 50 Protokollsicherungsvorgänge und 50 Verkleinerungsvorgänge, um die Transaktionsprotokolldatei erfolgreich auf 2 virtuelle Protokolldateien zu verkleinern.

In SQL Server 2005 können Sie allerdings eine Anweisung DBCC SHRINKFILE zum Verkleinern der Transaktionsprotokolldatei sofort auf 2 virtuelle Protokolldateien ausführen. Dies ist möglich, weil SQL Server 2005 Log Manager 2 virtuelle Protokolldateien erstellt und der physischen Speicherreihenfolge orientiert. Beide virtuelle Protokolldateien werden am Anfang der Transaktionsprotokolldatei.

Wenn Sie versuchen, eine Transaktionsprotokolldatei zu verkleinern, die wenig freien Platz in SQL Server 2005 hat, müssen Sie einen zusätzlichen Sicherungsvorgang durchführen. Die zusätzlichen Protokollsicherungsvorgang der Transaktionsprotokolldatei verkleinern. Dieser Vorgang ist zusätzlich die drei Schritte, die Sie zum Verkleinern der Transaktionsprotokolldatei in SQL Server 2000 ausführen. Weitere Informationen finden Sie im Microsoft Knowledge Base-Artikel, der im Abschnitt "Zusammenfassung" genannt wird. Gehen Sie folgendermaßen vor, um eine Transaktionsprotokolldatei zu verkleinern, die wenig freien Platz in SQL Server 2005 hat:
  1. Sichern Sie die Transaktionsprotokolldatei, die meisten der aktiven virtuellen Protokolldateien als inaktiv zu markieren. Daher können die inaktiven virtuellen Protokolldateien in einem späteren Schritt entfernt. Dazu starten Sie SQL Server Management Studio, und führen Sie eine Transact-SQL-Anweisung, die die folgende Transact-SQL-Anweisung ähnelt.
    BACKUP LOG <DatabaseName> TO DISK = '<BackupFile>'
    Hinweis In dieser Anweisung < Datenbankname > ist ein Platzhalter für den Namen der Datenbank, die Sie sichern und < BackupFile > steht für den vollständigen Pfad der Sicherungsdatei.

    Führen Sie z. B. die folgende Transact-SQL-Anweisung.
    BACKUP LOG TestDB TO DISK='C:\TestDB1.bak'
  2. Verkleinern der Transaktionsprotokolldatei. Führen Sie dazu eine Transact-SQL-Anweisung aus, die folgender Transact-SQL-Anweisung ähnelt.
    DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS
    Hinweis In dieser Anweisung < Dateiname > ist ein Platzhalter für den Namen der Transaktionsprotokolldatei und < TargetSize > ist ein Platzhalter für die Zielgröße die Transaktionsprotokolldatei werden soll. Die Zielgröße muss sinnvoll sein. Beispielsweise können nicht Sie die Transaktionsprotokolldatei verkleinern, die weniger als 2 virtuelle Protokolldateien.
  3. Wenn die Anweisung DBCC SHRINKFILE die Transaktionsprotokolldatei nicht auf die Zielgröße verkleinert führen Sie genannte BACKUP LOG-Anweisung in Schritt 1, um mehr virtuelle Protokolldateien als inaktiv zu markieren.
  4. Führen Sie in Schritt 2 genannte DBCC SHRINKFILE-Anweisung. Nach diesem Vorgang sollte die Transaktionsprotokolldatei in der Nähe der Zielgröße.
Log Manager-Algorithmus zum Abrufen der nächsten virtuellen Protokolldatei zusammengefasst in SQL Server 2005 geändert. Daher unterscheiden Verkleinern der Transaktionsprotokolldatei in SQL Server 2005 Verkleinern der Transaktionsprotokolldatei in SQL Server 2000.
  • Wenn eine Protokolldatei viel freien Platz hat, ist das Verkleinern der Transaktionsprotokolldatei in SQL Server 2005 schneller als der Transaktionsprotokolldatei in SQL Server 2000.
  • Wenn eine Protokolldatei wenig freien Platz hat, entspricht Verkleinern der Transaktionsprotokolldatei in SQL Server 2005 das Verkleinern der Transaktionsprotokolldatei in SQL Server 2000.
  • Wenn eine Protokolldatei wenig freien Platz hat, müssen Sie einen zusätzlichen Sicherungsvorgang in SQL Server 2005 ausführen als in SQL Server 2000 ausgeführt.

Referenzen

Weitere Informationen zum Verkleinern des Transaktionsprotokolls finden Sie auf der Microsoft Developer Network (MSDN)-Website Verkleinern des Transaktionsprotokolls .


Weitere Informationen über die Anweisung DBCC SHRINKFILE finden Sie auf der MSDN-Website von DBCC SHRINKFILE (Transact-SQL) .


Weitere Informationen über Transaktionslogs finden Sie Transaktionslogs MSDN-Website.
Eigenschaften

Artikelnummer: 907511 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback