0% found this document useful (0 votes)
65 views

Shrink A Database: Before You Begin

This document provides instructions for shrinking a SQL Server database using SQL Server Management Studio or Transact-SQL. It describes shrinking as moving data pages to unused space to free up space at the end of files, which can then be deallocated. It notes limitations like databases cannot shrink below their minimum size and backups cannot occur during shrinks. Recommendations include viewing free space first and knowing shrinks increase fragmentation. Instructions are given for shrinking through the GUI or T-SQL's DBCC SHRINKDATABASE command.

Uploaded by

Manoj Agnihotri
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
65 views

Shrink A Database: Before You Begin

This document provides instructions for shrinking a SQL Server database using SQL Server Management Studio or Transact-SQL. It describes shrinking as moving data pages to unused space to free up space at the end of files, which can then be deallocated. It notes limitations like databases cannot shrink below their minimum size and backups cannot occur during shrinks. Recommendations include viewing free space first and knowing shrinks increase fragmentation. Instructions are given for shrinking through the GUI or T-SQL's DBCC SHRINKDATABASE command.

Uploaded by

Manoj Agnihotri
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

Shrink a Database

SQL Server 2016


Other Versions

Applies To: SQL Server 2016


This topic describes how to shrink a database by using Object in SQL Server 2016 by using
SQL Server Management Studio or Transact-SQL.
Shrinking data files recovers space by moving pages of data from the end of the file to
unoccupied space closer to the front of the file. When enough free space is created at the
end of the file, data pages at end of the file can be deallocated and returned to the file
system.
In This Topic
Before you begin:
Limitations and Restrictions
Recommendations
Security
To shrink a database, using:
SQL Server Management Studio
Transact-SQL
Follow Up: You shrink a database
Before You Begin
Limitations and Restrictions
The database cannot be made smaller than the minimum size of the database. The
minimum size is the size specified when the database was originally created, or the
last explicit size set by using a file-size-changing operation, such as DBCC
SHRINKFILE. For example, if a database was originally created with a size of 10 MB
and grew to 100 MB, the smallest size the database could be reduced to is 10 MB,
even if all the data in the database has been deleted.
You cannot shrink a database while the database is being backed up. Conversely, you
cannot backup a database while a shrink operation on the database is in process.
DBCC SHRINKDATABASE will fail when it encounters an xVelocity memory optimized
columnstore index. Work completed before encountering the columnstore index will
succeed so the database might be smaller. To complete DBCC SHRINKDATABASE,
disable all columnstore indexes before executing DBCC SHRINKDATABASE, and then
rebuild the columnstore indexes.
Recommendations
To view the current amount of free (unallocated) space in the database. For more
information, see Display Data and Log Space Information for a Database
Consider the following information when you plan to shrink a database:
o A shrink operation is most effective after an operation that creates lots of
unused space, such as a truncate table or a drop table operation.
o Most databases require some free space to be available for regular day-to-day
operations. If you shrink a database repeatedly and notice that the database
size grows again, this indicates that the space that was shrunk is required for
regular operations. In these cases, repeatedly shrinking the database is a
wasted operation.
o A shrink operation does not preserve the fragmentation state of indexes in the
database, and generally increases fragmentation to a degree. This is another
reason not to repeatedly shrink the database.
o Unless you have a specific requirement, do not set the AUTO_SHRINK
database option to ON.
Security
Permissions
Requires membership in the sysadmin fixed server role or the db_owner fixed database
role.
Using SQL Server Management Studio
To shrink a database
1. In Object Explorer, connect to an instance of the SQL Server Database Engine, and
then expand that instance.
2. Expand Databases, and then right-click the database that you want to shrink.
3. Point to Tasks, point to Shrink, and then click Database.
Database
Displays the name of the selected database.
Current allocated space
Displays the total used and unused space for the selected database.
Available free space
Displays the sum of free space in the log and data files of the selected database.
Reorganize files before releasing unused space
Selecting this option is equivalent to executing DBCC SHRINKDATABASE specifying a
target percent option. Clearing this option is equivalent to executing DBCC
SHRINKDATABASE with TRUNCATEONLY option. By default, this option is not selected
when the dialog is opened. If this option is selected, the user must specify a target
percent option.
Maximum free space in files after shrinking
Enter the maximum percentage of free space to be left in the database files after the
database has been shrunk. Permissible values are between 0 and 99.
4. Click OK.
Using Transact-SQL
To shrink a database
1. Connect to the Database Engine.
2. From the Standard bar, click New Query.
3. Copy and paste the following example into the query window and click Execute. This
example uses DBCC SHRINKDATABASE to decreases the size of the data and log files
in the UserDB database and to allow for 10 percent free space in the database.
Transact-SQL
DBCC SHRINKDATABASE (UserDB, 10);
GO

Follow Up: After you shrink a database


Data that is moved to shrink a file can be scattered to any available location in the file. This
causes index fragmentation and can slow the performance of queries that search a range of
the index. To eliminate the fragmentation, consider rebuilding the indexes on the file after
shrinking.
See Also
Shrink a File
sys.databases (Transact-SQL)
sys.database_files (Transact-SQL)
DBCC (Transact-SQL)
DBCC SHRINKFILE (Transact-SQL)
Database Files and Filegroups

You might also like