2016-12-07 9 views
2

Ich habe eine SQL Server 2014-Datenbankauszug, der ca. ist. 60 GB groß. In SQL Server Management Studio wird für die ursprüngliche DB angezeigt, dass die "ROWS Data" eine anfängliche Größe von ~ 99000 MB und die "LOG" eine anfängliche Größe von ~ 25600 MB hat.So verkleinern Sie die Größe der SQL Server 2014-Datenbank

Nun sind in der Datenbank Viewtabellen, die ca. 10GB groß sind und die ich spülen/reinigen kann.

Nach dem Löschen der Daten in diesen Tabellen, was ist der beste Weg, um die physische Größe der Datenbank zu verringern? Viele Posts, die ich entdeckt habe, befassen sich mit SHRINKDATABASE, aber einige Artikel werden es wegen der schlechten Fragmentierung und Leistung nicht empfehlen.

Vielen Dank im Voraus.

+1

Gibt es einen bestimmten Grund, warum Sie es verkleinern möchten? Denn selbst wenn Sie es verkleinern, wird es wieder in der Größe wachsen. Außerdem sind diese Empfehlungen nicht genau richtig. Sie können die SQL-Leistung beeinträchtigen, wenn Sie Ihre Datenbank verkleinern. –

+0

Ja, wir müssen es so klein wie möglich machen, weil wir es teilen müssen und die Daten in den Tabellen, die wir löschen können, sind insgesamt etwa 40 GB. Es gibt also viel Potenzial. – user1032465

+1

Der Grund, warum die Leute SHRINK nicht empfehlen, ist, dass es nicht die "richtige" Strategie für den Umgang mit Datenbanken ist, die in Produktionsumgebungen laufen. Wenn Sie einen Versionstest oder eine Entwicklung bereitstellen oder mit anderen Entwicklern oder etwas Ähnlichem teilen möchten, sehe ich wenig Grund, warum Sie den Schrumpf befürchten müssten. Je nachdem, was Sie eigentlich erreichen wollen, ist ein Schrumpfen möglich. Mach es einfach nicht in der Produktionsversion, außer du bist dir sicher was du tust. (Ich habe im Laufe der Jahre viele Datenbanken geschrumpft - nicht meine erste Wahl, aber gut - es ist ein Werkzeug in der Box) –

Antwort

0

Hier ist ein Code, den ich verwendet habe, um den belegten Speicherplatz zu reduzieren und Datenbankraum und tatsächlichen Speicherplatz freizugeben. Hoffe das hilft.

USE YourDataBase; 
GO 
-- Truncate the log by changing the database recovery model to SIMPLE. 
ALTER DATABASE YourDataBase 
SET RECOVERY SIMPLE; 
GO 
-- Shrink the truncated log file to 1 MB. 
DBCC SHRINKFILE (YourDataBase_log, 1); 
GO 
-- Reset the database recovery model. 
ALTER DATABASE YourDataBase 
SET RECOVERY FULL; 
GO 
+0

ShrinkDatabase: verkleinern Sie alle Dateien ShrinkFile: nur eine Datei Zum Beispiel haben Sie möglicherweise ein Protokoll Sicherungsproblem und es ist außer Kontrolle geraten, so dass Sie DBCC SHRINKFILE ausführen. Sie verwenden fast nie ShrinkDatabase. – Krishneil

+0

Einige nützliche Links für Sie zu lesen. Http://technet.microsoft.com/en-us/library/ms189080 (v = sql.105).aspx – Krishneil

+0

http://aboutsqlserver.com/2014/12/02/size-does-matter-10-ways-to-reduce-the-database-size-and-improve-performance-in-sql-server/ – Krishneil

0

Statt Verwendung DBCC SHRINKDATABASE Ich schlage vor, Sie DBCC SHRINKFILE, verwenden, offensichtlich sollten Sie Ihre Tabellen auf verschiedenen FILEGROUP gespeichert werden. Dann können Sie die physische Größe Ihrer Datenbank reduzieren, indem Sie die Fragmentierung optimieren.

Hope this helfen könnte

0

Sie benötigen DataBase, indem Sie unter Abfrage schrumpfen.

ALTER DATABASE [DBNAME] SET RECOVERY SIMPLE WITH NO_WAIT 
DBCC SHRINKFILE(PTechJew_LOG, 1) 
ALTER DATABASE [DBNAME] SET RECOVERY FULL WITH NO_WAIT 

Nach dem Ausführen dieser Abfrage überprüfen Sie Ihre Protokolldatei. Seine Arbeit.

Verwandte Themen