Was ist der Unterschied zwischen Shrink Database und File?

33
DBCC ShrinkDatabase()
DBCC ShrinkFile()
  1. Muss ich beide DBCC-Befehle ausführen, um die Datenbank zu verkleinern?
  2. Was ist der Unterschied zwischen diesen beiden oben?
Paul White sagt GoFundMonica
quelle

Antworten:

36

Einfach...

  • DBCC ShrinkDatabase(): Alle Dateien verkleinern
  • DBCC ShrinkFile(): nur eine Datei

Möglicherweise liegt ein Problem mit der Protokollsicherung vor, und die Steuerung ist außer Kontrolle geraten, sodass Sie sie ausführen DBCC ShrinkFile().

Sie verwenden fast nie ShrinkDatabase.

Bevor Sie einen der beiden Befehle verwenden, lesen Sie bitte Paul Randals Blog über das Verkleinern .

Ich würde keine der Dateien (mdf, ldf) verkleinern, es sei denn, es gab einen klaren Grund. Die Dateien haben die Größe, die sie haben müssen. Blogs, die dies im Rahmen der regelmäßigen Wartung vorschlagen, verstehen möglicherweise nicht, wie SQL Server funktioniert.

gbn
quelle
2
Danke, Mann. Du hast recht. Ich habe gerade den Blog von Brent Ozar gelesen. Er schwört buchstäblich in seinem Blog "Hör auf, deine Datenbankdateien zu verkleinern. Ernsthaft. Jetzt.".
Und wenn es dasselbe tut, warum gibt es unterschiedliche Argumente?
Stefan Steinegger
2

Eine Standarddatenbank enthält zwei Dateien

MyDb.MDF und MyDb.LDF

Die MDF-Datei ist die Datendatei, in der sich die primäre Partition befindet. Abhängig von Ihren Anforderungen können Sie eine Datenbank in mehrere Dateien partitionieren. Dies geschieht, damit Daten (einzelne oder mehrere Tabellen) mehrere Dateien umfassen können, die normalerweise auf separaten Festplatten gespeichert werden, um eine höhere Leistung zu erzielen.

Wenn Sie eine Datenbank verkleinern, werden alle mit dieser Datenbank verknüpften Dateien verkleinert.

Wenn Sie eine Datei verkleinern, wird nur die ausgewählte Datei verkleinert.

Sie müssen nur den Befehl "Datenbank verkleinern" verwenden. Dies ist jedoch normalerweise keine gute Praxis und wird auch nicht empfohlen.

Wenn Sie uns mitteilen, um welches Problem es sich handelt, erhalten Sie weitere Informationen zur Behebung des Problems.

Raj More
quelle
Oh, das Problem ist, dass unser Produktionsserver nicht mehr genügend Speicherplatz hat. Das Hinzufügen weiterer Festplatten ist ideal, aber ich habe mich gefragt, was wir sonst noch tun können.
0

Höchstwahrscheinlich verwenden wir nur dbcc shrinkfile. sp_helpdb 'Datenbankname' enthält die Liste der Daten- und Protokolldateien in einer Datenbank.

Klicken Sie mit der rechten Maustaste auf das Management Studio, und geben Sie unter "Tasks-> Verkleinern-> Datei" an, wie viel% Sie verkleinern können.

Was auch immer wir schrumpfen, es steht auf der Festplatte als freier Speicherplatz zur Verfügung.

zB: benutze 'datenbankname' dbcc shrinkfile (fileid, 100)

hier ist 100 100 MB

Datei-ID kann von sp_helpdb 'Datenbankname' abgerufen werden


quelle