|
DBCC SHRINKFILE
Shrink the size of the current database data / log file or empty a file by moving the data.
Syntax DBCC SHRINKFILE ( file , EMPTYFILE ) [WITH NO_INFOMSGS] DBCC SHRINKFILE ( file , target_size [, {NOTRUNCATE | TRUNCATEONLY }] ) [WITH NO_INFOMSGS ] Key: file - 'file_name' or file_id EMPTYFILE - Migrate data to other files in the same filegroup. The file can be removed with ALTER DATABASE. target_size - The size for the file in megabytes. default = that specified when the file was created, or the last size used with ALTER DATABASE.(int) NOTRUNCATE - Free space at the end of the data file is not returned to the OS (pages are still moved) TRUNCATEONLY - Release free space at the end of the data file to the OS (do not move pages) NO_INFOMSGS - Suppress all information messages (severity 0-10)
Only one of the two truncate options can be specified - they do not apply to log files.
Examples
Shrink a datafile to 64 Mb:
DBCC SHRINKFILE (MyDataFile01, 64);
Shrink a Log file to 4 Mb (in Simple recovery mode)
USE MyDatabase; GO -- Set database recovery model to SIMPLE. ALTER DATABASE MyDatabase SET RECOVERY SIMPLE; GO -- Shrink the truncated log file to 4 MB. DBCC SHRINKFILE (MyDatabase_Log, 4); GO -- Set database recovery model to FULL. ALTER DATABASE MyDatabase SET RECOVERY FULL; GO
“Men shrink less from offending one who inspires love than one who inspires fear” - Niccolo Machiavelli
Related commands:
ALTER DATABASE
DBCC SHRINKDATABASE
FILE_ID
sys.database_files
Equivalent Oracle command:
ALTER DATABASE Datafile '/opt/oracle/oradata/myserver/ss64.dbf' resize 500M;