SQL Server – Difference Between Shrink Database and File

dbccshrinksql serversql-server-2005

DBCC ShrinkDatabase()
DBCC ShrinkFile()
  1. Do I need to run both DBCC commands in order to shrink the database?
  2. What is the difference between these two above?

Best Answer

Simply...

  • DBCC ShrinkDatabase(): shrink all files
  • DBCC ShrinkFile(): just one file

For example, you may have a log backup issue and it's grown out of control so you run DBCC ShrinkFile().

You almost never use ShrinkDatabase.

Before you consider using either command, please read Paul Randal's blog on shrinking.

I'd shrink neither one of the files (mdf, ldf) unless there was a clear reason. The files are the size they are because they need to be. Any blogs suggesting to do so as part of regular maintenance probably don't understand how SQL Server works.