Verkleinern einer Datenbank

Aktualisiert: 14. April 2006

In SQL Server 2005 kann jede Datei innerhalb einer Datenbank verkleinert werden, um nicht verwendete Seiten zu entfernen. Obwohl Datenbankmodul den Speicherplatz effektiv neu zuweist, kann es vorkommen, dass eine Datei nicht mehr so groß sein muss, wie sie einmal war. Dann kann es erforderlich sein, die Datei zu verkleinern. Sowohl Daten- als auch Transaktionsprotokolldateien können verkleinert werden. Die Datenbankdateien können manuell verkleinert werden, entweder als Gruppe oder einzeln, oder für die Datenbank kann festgelegt werden, dass sie in angegebenen Intervallen automatisch verkleinert wird.

Dateien werden immer am Ende verkleinert. Wenn Sie z. B. eine Datei mit einer Größe von 5 GB besitzen und 4 GB als Wert für target_size in einer DBCC SHRINKFILE-Anweisung angeben, gibt Datenbankmodul von den letzten 1 GB am Ende der Datei so viel Speicherplatz wie möglich frei. Wenn sich in dem freigegebenen Teil der Datei verwendete Seiten befinden, verlagert Datenbankmodul die Seiten zuvor in den Teil der Datei, der erhalten bleibt. Eine Datenbank kann nur bis zu einer Größe verkleinert werden, bei der sie keinen freien Speicherplatz mehr enthält. Wenn eine Datenbank mit einer Größe von 5 GB z. B. 4 GB Daten hat und Sie 3 GB als Wert für target_size in einer DBCC SHRINKFILE-Anweisung angeben, wird nur 1 GB freigegeben.

Automatisches Verkleinern von Datenbanken

Wenn die AUTO_SHRINK-Datenbankoption auf ON festgelegt wurde, verkleinert Datenbankmodul automatisch die Datenbanken, in denen freier Speicherplatz vorhanden ist. Diese Option wird mithilfe der ALTER DATABASE-Anweisung festgelegt. Die Standardeinstellung ist OFF. Die Speicherplatzverwendung in jeder Datenbank wird in regelmäßigen Abständen von Datenbankmodul überprüft. Wenn für eine Datenbank die AUTO_SHRINK-Option auf ON gesetzt wurde, verringert Datenbankmodul die Größe der Dateien in der Datenbank. Dieser Vorgang wird im Hintergrund ausgeführt und hat keinerlei Einfluss auf die Benutzeraktivitäten innerhalb der Datenbank.

So legen Sie fest, dass eine Datenbank automatisch verkleinert wird

ALTER DATABASE (Transact-SQL)

Manuelles Verkleinern von Datenbanken

Sie können eine Datenbank oder Dateien innerhalb einer Datenbank mit der DBCC SHRINKDATABASE-Anweisung bzw. mit der DBCC SHRINKFILE-Anweisung manuell verkleinern. Falls eine DBCC SHRINKDATABASE- bzw. DBCC SHRINKFILE-Anweisung nicht den gesamten Speicherplatz in einer Protokolldatei freigeben kann, gibt die Anweisung eine Informationsmeldung aus, in der angegeben ist, welche Aktion Sie durchführen müssen, um mehr Speicherplatz für die Freigabe zur Verfügung zu stellen. Weitere Informationen zum Verkleinern von Protokolldateien finden Sie unter Verkleinern des Transaktionsprotokolls.

Die Ausführung von DBCC SHRINKDATABASE und DBCC SHRINKFILE kann an jeder Stelle des Vorgangs beendet werden, wobei der fertig gestellte Anteil erhalten bleibt.

Mithilfe der DBCC SHRINKDATABASE-Anweisung kann eine ganze Datenbank höchstens bis auf ihre Originalgröße verkleinert werden. Wenn eine Datenbank mit einer Größe von 10 MB erstellt und auf 100 MB vergrößert wurde, kann die Datenbank demzufolge höchstens auf 10 MB verkleinert werden, auch wenn alle Daten in der Datenbank gelöscht wurden.

Sie können eine einzelne Datenbankdatei jedoch mithilfe der DBCC SHRINKFILE-Anweisung auf eine Größe verkleinern, die unter ihrer Anfangsgröße liegt. Sie müssen jede Datei einzeln verkleinern, anstatt zu versuchen, die gesamte Datenbank zu verkleinern.

ms189080.note(de-de,SQL.90).gifHinweis:
Es ist nicht möglich, die Datenbank oder das Transaktionsprotokoll zu verkleinern, während die Datenbank oder das Transaktionsprotokoll gesichert werden. Umgekehrt können Sie keine Datenbank- oder Transaktionsprotokollsicherung erstellen, während Sie versuchen, die Datenbank oder das Transaktionsprotokoll zu verkleinern.

So verkleinern Sie eine Datenbank

So verkleinern Sie eine Daten- oder Protokolldatei

Verkleinern des Transaktionsprotokolls

Eine Transaktionsprotokolldatei kann nur innerhalb fester Grenzen verkleinert werden. Die Größe der virtuellen Protokolldateien innerhalb des Protokolls bestimmt die mögliche Reduzierung der Größe. Aus diesem Grund kann das Protokoll nicht weiter als bis auf die Größe der virtuellen Protokolldatei verkleinert werden. Darüber hinaus erfolgt die Verkleinerung der Protokolldatei in Schritten, die der Größe der virtuellen Protokolldatei entsprechen. Eine Transaktionsprotokolldatei mit einer Größe von 1 GB kann beispielsweise fünf virtuelle Protokolldateien mit einer Größe von je 200 MB umfassen. Durch das Verkleinern der Transaktionsprotokolldatei werden nicht verwendete virtuelle Protokolldateien gelöscht; es werden jedoch mindestens zwei virtuelle Protokolldateien beibehalten. Da jede virtuelle Protokolldatei in diesem Beispiel über eine Größe von 200 MB verfügt, kann das Transaktionsprotokoll nicht weiter als bis auf die Mindestgröße von 400 MB verkleinert werden, wobei die Verkleinerung nur in Schritten von 200 MB erfolgen kann. Um eine Transaktionsprotokolldatei auf eine geringere Größe verkleinern zu können, müssen Sie ein kleines Transaktionsprotokoll erstellen und die automatische Vergrößerung dieser Datei aktivieren, anstatt auf einmal eine große Transaktionsprotokolldatei zu erstellen.

In SQL Server 2005 wird sofort mithilfe eines DBCC SHRINKDATABASE- oder DBCC SHRINKFILE-Vorgangs versucht, die Transaktionsprotokolldatei auf die angeforderte Größe zu verkleinern (mit Rundung). Sie sollten die Protokolldatei vor der Verkleinerung sichern, um die Größe des logischen Protokolls zu reduzieren, und solche virtuellen Protokolle als inaktiv markieren, die keinen Teil des logischen Protokolls enthalten. Weitere Informationen finden Sie unter Verkleinern des Transaktionsprotokolls.

Bewährte Methoden

Berücksichtigen Sie die folgenden Informationen, wenn Sie eine Datenbank oder eine Datei verkleinern möchten:

  • Ein Verkleinerungsvorgang ist am effektivsten nach einem Vorgang, durch den umfangreicher nicht verwendeter Speicherplatz bereitgestellt wird, z. B. das Abschneiden oder Löschen einer Tabelle.
  • Die meisten Datenbanken benötigen für die täglichen Routinevorgänge eine gewisse Menge an freiem Speicherplatz. Wenn Sie eine Datenbank wiederholt verkleinern und feststellen, dass die Datenbankgröße wieder zunimmt, deutet dies darauf hin, dass der verkleinerte Speicherplatz für regelmäßige Vorgänge benötigt wird. In diesem Fall ist das Verkleinern der Datenbank vergeblich.
  • Bei einem Verkleinerungsvorgang bleibt der Fragmentierungszustand der Indizes in der Datenbank nicht erhalten. Im Allgemeinen wird die Fragmentierung bis zu einem gewissen Grad verstärkt. So sollten Sie z. B. nach einer Neuerstellung von Indizes keine Datenbank oder Datendatei verkleinern. Dies ist ein weiterer Grund, die Datenbank nicht wiederholt zu verkleinern.
  • Legen Sie die Datenbankoption AUTO_SHRINK nicht auf ON fest, sofern dies nicht aus einem bestimmten Grund erforderlich ist.

Auf Zeilenversionsverwaltung basierende Isolationsstufen und Verkleinerungsvorgänge

Es kann vorkommen, dass Verkleinerungsvorgänge durch eine Transaktion blockiert werden, die unter einer zeilenversionsbasierten Isolationsstufe ausgeführt wird. Wenn z. B. während der Ausführung eines DBCC SHRINK DATABASE-Vorgangs gerade ein umfangreicher Löschvorgang unter einer zeilenversionsbasierten Isolationsstufe stattfindet, wird mit dem Verkleinern der Dateien gewartet, bis der Löschvorgang beendet ist. In diesem Fall geben DBCC SHRINKFILE und DBCC SHRINKDATABASE eine Informationsmeldung (5202 für SHRINKDATABASE und 5203 für SHRINKFILE) an das SQL Server-Fehlerprotokoll aus, und zwar in der ersten Stunde alle fünf Minuten und danach einmal pro Stunde. Weitere Informationen finden Sie unter DBCC SHRINKDATABASE (Transact-SQL).

Siehe auch

Konzepte

Hinzufügen und Löschen von Daten- und Transaktionsprotokolldateien
Einführung in Transaktionsprotokolle
Physikalische Datenbankdateien und Dateigruppen
Grundlegendes zu Dateien und Dateigruppen

Andere Ressourcen

Verstehen und Verwalten von Transaktionsprotokollen

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

14. April 2006

Neuer Inhalt:
  • Der Abschnitt "Bewährte Methoden" wurde hinzugefügt.