Mit dem Transact-Befehl DBCC SHRINKFILE kann man die Größe der Datendatei (MDF und NDF) und er Transaktionsprotokolldatei (LDF) verkleinern.

Was passiert bei der Verkleinung?
Bei der Verkleinerung der Dateien werden die Inhalte in die selben Dateigruppen verschoben. Somit werden Dateigruppen frei. Die freigewordenen Dateigruppen können aus der jeweiligen Datei entfernt werden und somit wird die Datendatei oder die Transaktionsprotokolldatei kleiner.

In den meisten Anwendungsfällen wird jedoch die Protokolldatei verkleinert.

DBCC SHRINKFILE mit der Datendatei

Die Datendatei kann in jedem Wiederherstellungsmodell verkleinert werden.

USE "Datenbankname";
GO
DBCC SHRINKFILE ("Datendatei", "MB Angabe der Größe");
GO

DBCC SHRINKFILE mit der Transaktionsprotokolldatei

Das Transaktionsprotokoll kann im Wiederherstellungsmodell EINFACH über einen SQL-Befehl abgeschnitten werden.

USE "Datenbankname"
GO
DBCC SHRINKFILE("Transaktionsprotokollname", "MB Angabe der Größe")
GO

Der Befehl ist recht einfach aufgebaut.

Nach dem Befehl DBCC SHRINKFILE werden innerhalb der Klammer die Parameter Transaktionsprotokollname und End-Größe angegeben.

Die Operation schlägt fehl wenn z.B. das Wiederherstellungsmodell auf VOLLSTÄNDIG oder auf MASSENPROTOKOLLIERT steht.

Falls die der Fall ist kann man vor dem Verkleinern von Folgendes Script ausführen:

USE "Datenbankname";
GO
--Datenbank Wiederherstellungsmodell auf EINFACH setzen
ALTER DATABASE "Datenbankname" SET RECOVERY SIMPLE;
GO

Nach dem verkleinern kann man dann das Wiederherstellungsmodell mit diesem Script auf Vollständig setzen:

USE "Datenbankname";
GO
--Datenbank Wiederherstellungsmodell auf EINFACH setzen
ALTER DATABASE "Datenbankname" SET RECOVERY FULL;
GO

Von Michael