2009-08-11 15 views
3

Ich habe das folgende Problem. Wir haben eine Datenbank, die Binärdateien in der Datenbank speichert. Wir wissen, dass die Größe der Datenbank groß sein kann, also haben wir alle Binärdateien aus der Datenbank entfernt und die Aufgabe "shrink" darauf verwendet. So hofften wir, dass die Datenbank viel kleiner wäre. Diese sind die Ergebnisse:Datenbankgröße ist riesig

vor dem Entfernen Größe war: 20 Gigabyte nach dem Entfernen Größe wurde: 25 Gigabyte (inkl Log-Datei) nach Schrumpfgröße betrug: 13 Gigabyte

jetzt habe ich keine Ahnung, wo das 13 Gig ist von, die größte Tabelle in der Datenbank ist eine Logtabelle und es ist 1,3 Gig alle anderen kombiniert nicht 200 mb ...

könnte es sein, dass es noch einige Daten in der Protokolldatei, die die Schrumpfung Aufgabe kann nicht entfernt werden? gibt es eine Lösung für dieses Problem?

+0

Haben Sie die Größe der Protokolldatei vs der MDF überprüft? – RichardOD

+0

Welche Version von SQL verwenden Sie? –

Antwort

3

Wenn Ihr Wiederherstellungsmodell "voll" ist und Sie Ihr Transaktionsprotokoll nicht gesichert und dann geschrumpft haben, könnte es immer noch groß bleiben.

Je nach Situation besteht eine der einfachsten Möglichkeiten zum Verkleinern des Transaktionsprotokolls darin, das Wiederherstellungsmodell auf "Einfach" zu setzen, dann die Transaktionsprotokolldateien zu verkleinern und dann das Wiederherstellungsmodell auf voll zurückzusetzen Produktionssystem, für das Sie möglicherweise eine Wiederherstellung nach einem bestimmten Zeitpunkt benötigen, sollten Sie stattdessen Sicherungen Ihres Transaktionslogs durchführen.

+0

Trennen und Anhängen mit Protokolldatei löschen ist eine weitere Option - http://bloggingabout.net/blogs/mglaser/archive/2007/01/12/sql-server-tip-shrinking-a-sql-server-log.aspx – RichardOD

+3

Löschen der Protokolldatei ist ernsthaft eine schlechte Idee! denk nicht mal darüber nach! –

+3

Löschen der T-Log-Datei ist eine schreckliche Idee. – SQLChicken

3

Um mehr Informationen über Raumnutzung erhalten Sie ausprobieren können:

EXEC sp_spaceused; 
0

Bitte beachten Sie Transaktionsprotokollsicherungen einzurichten (nicht nur Datenbanksicherungen, wie sie das Protokoll nicht halten klein wie Sie herausgefunden haben) nach Sie nehmen den Rat von Robin Day und verkleinern das Protokoll oder Ihr Protokoll wird einfach wieder groß. Unsere Transaktionsprotokolle werden alle 15 Minuten gesichert. Je nachdem, wie viele Daten Sie verlieren können, wenn Sie einen Fehler haben, muss Ihr Zeitplan möglicherweise mehr oder weniger häufig sein. Zumindest würde ich ein tägliches Log-Backup machen, nur um das Log in einer vernünftigen Größe zu halten.

+0

tägliche Backups der Datenbank haben keinen Einfluss auf die Protokolle, Sie müssen auch das Protokoll sichern. – HLGEM

0

Eine Möglichkeit ist, dass die Tabelle, aus der Sie die Daten gelöscht haben, ein Heap ist (bedeutet, dass kein Clustered-Index vorhanden ist), und wenn Sie aus einem Heap löschen, wird der für die Tabelle reservierte Speicherplatz nicht unbedingt freigegeben. Überprüfen Sie diesen Artikel von MS: http://support.microsoft.com/kb/913399

Verwandte Themen