Verkleinern einer Datenbank

Gilt für: SQL Server Azure SQL-DatenbankAzure SQL Managed Instance

In diesem Artikel wird beschrieben, wie Sie in SQL Server mit dem Objekt-Explorer in SQL Server Management Studio oder Transact-SQL eine Datenbank verkleinern.

Mit dem Verkleinern von Datendateien wird Platz gewonnen, indem Datenseiten vom Ende der Datei an nicht belegten Platz weiter am Dateianfang verschoben werden. Wurde am Ende der Datei ausreichend Platz geschaffen, kann die Zuordnung der Datenseiten am Ende der Datei aufgehoben und die Datenseiten können ins Dateisystem zurückgegeben werden.

Einschränkungen

  • Die Datenbank kann nicht unter die Mindestgröße der Datenbank verkleinert werden. Die Mindestgröße stellt die Größe dar, die bei der ursprünglichen Erstellung der Datenbank angegeben wurde, bzw. die letzte explizite Größe, die bei einer Dateigrößenänderung, z. B. DBCC SHRINKFILE, festgelegt wurde. Wenn z. B. eine Datenbank ursprünglich mit einer Größe von 10 MB erstellt und auf 100 MB vergrößert wurde, kann die Datenbank höchstens auf 10 MB verkleinert werden, auch wenn alle Daten in der Datenbank gelöscht wurden.

  • Während einer Datenbanksicherung können Sie die Datenbank nicht verkleinern. Umgekehrt können Sie eine Datenbank nicht sichern, während ein Verkleinerungsvorgang für die Datenbank ausgeführt wird.

Empfehlungen

  • Zum Anzeigen des aktuellen freien (nicht zugeordneten) Speicherplatzes in der Datenbank. Weitere Informationen finden Sie unter Anzeigen von Informationen zum Daten- und Protokollspeicherplatz einer Datenbank

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

    • Ein Verkleinerungsvorgang ist am effektivsten nach einem Vorgang, durch den eine große Menge nicht verwendeter Speicherplatz bereitgestellt wird, z. B. nach einer umfangreichen DELETE-Anweisung oder dem Abschneiden bzw. Löschen einer Tabelle.

    • Die meisten Datenbanken erfordern verfügbaren freien Speicherplatz für die normalen alltäglichen Vorgänge. Wenn Sie eine Datenbank wiederholt verkleinern und feststellen, dass die Datenbankgröße wieder zunimmt, deutet das darauf hin, dass der freie Speicherplatz für reguläre Vorgänge benötigt wird. In diesem Fall ist das Verkleinern der Datenbank vergeblich. Automatische Vergrößerungsereignisse, die zum Vergrößern der Datenbankdatei(en) erforderlich sind, beeinträchtigen die Leistung.

    • Bei einem Verkleinerungsvorgang bleibt der Fragmentierungszustand der Indizes in der Datenbank nicht erhalten. Im Allgemeinen wird die Fragmentierung zu einem gewissen Grad verstärkt. Dies ist ein weiterer Grund, die Datenbank nicht wiederholt zu verkleinern.

    • Legen Sie die Datenbankoption AUTO_SHRINK nicht auf ON fest, es sei denn, besondere Anforderungen machen dies erforderlich.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Serverrolle sysadmin oder der festen Datenbankrolle db_owner .

Bemerkungen

Aktuelle Verkleinerungsvorgänge können andere Abfragen in der Datenbank blockieren und können von Abfragen blockiert werden, die bereits ausgeführt werden. Die in SQL Server 2022 (16.x) eingeführte Verkleinerung von Datenbankvorgängen verfügt über eine WAIT_AT_LOW_PRIORITY Option. Dieses Feature ist eine neue zusätzliche Option für DBCC SHRINKDATABASE und DBCC SHRINKFILE. Wenn ein neuer Verkleinerungsvorgang im WAIT_AT_LOW_PRIORITY Modus aufgrund einer bereits laufenden Abfrage mit langer Ausführungszeit nicht die erforderlichen Sperren erhalten kann, wird der Verkleinerungsvorgang nach einer Minute beendet und automatisch beendet, wodurch verhindert wird, dass andere Abfragen blockiert werden. Weitere Informationen finden Sie unter DBCC SHRINKDATABASE.

Verwenden Sie SQL Server Management Studio

Verkleinern einer Datenbank

  1. Stellen Sie im Objekt-Explorereine Verbindung zu einer Instanz von SQL Server-Datenbank-Engineher, und erweitern Sie dann diese Instanz.

  2. Erweitern Sie Datenbanken, und klicken Sie dann mit der rechten Maustaste auf die Datenbank, die Sie verkleinern möchten.

  3. Fahren Sie mit dem Mauszeiger über Tasks, dann über Verkleinern, und klicken Sie dann auf Datenbank.

    Datenbank
    Zeigt den Namen der ausgewählten Datenbank an.

    Aktuell zugeordneter Speicherplatz
    Zeigt den gesamten verwendeten und nicht verwendeten Speicherplatz für die ausgewählte Datenbank an.

    Verfügbarer freier Speicherplatz
    Zeigt die Summe des freien Speicherplatzes in den Protokoll- und Datendateien der ausgewählten Datenbank an.

    Dateien vor dem Freigeben von nicht belegtem Speicherplatz neu organisieren
    Wenn diese Option ausgewählt wird, entspricht dies dem Ausführen von DBCC SHRINKDATABASE mit der Angabe einer Option zur Prozentvorgabe. Das Deaktivieren dieser Option entspricht dem Ausführen von DBCC SHRINKDATABASE mit der Option TRUNCATEONLY. Standardmäßig ist diese Option beim Öffnen des Dialogfelds nicht ausgewählt. Wenn diese Option ausgewählt ist, muss der Benutzer eine Option zur Prozentvorgabe angeben.

    Maximal verfügbarer Speicherplatz in Dateien nach dem Verkleinern
    Geben Sie den Maximalwert für den freien Speicherplatz in Prozent an, der in den Datenbankdateien übrig bleiben soll, nachdem die Datenbank verkleinert wurde. Der zulässige Wert liegt zwischen 0 und 99.

  4. Klicken Sie auf OK.

Verwenden von Transact-SQL

Verkleinern einer Datenbank

  1. Stellen Sie eine Verbindung mit dem Datenbank-Engineher.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen. In diesem Beispiel wird DBCC SHRINKDATABASE verwendet, um die Größe der Daten- und Protokolldateien in der Datenbank UserDB zu verringern und für 10 Prozent freien Speicherplatz in der Datenbank zu sorgen.

DBCC SHRINKDATABASE (UserDB, 10);
GO

Nachverfolgung: Nach dem Verkleinern einer Datenbank

Die zum Verkleinern einer Datei verschobenen Daten können an beliebigen freien Platz in der Datei verschoben werden. Dies führt zur Indexfragmentierung und kann die Leistung von Abfragen, die einen Bereich des Indexes suchen, verlangsamen. Zur Vermeidung von Fragmentierung sollten die Dateiindizes nach der Verkleinerung neu erstellt werden. Weitere Informationen finden Sie unter Neuerstellen eines Indexes.

Weitere Informationen

Nächste Schritte