Shrink database after removing extra data [duplicate]
-
16-10-2019 - |
Pergunta
This question already has an answer here:
We have a need to fit a database in 4GB in order to use SQL Server Express Edition. I started from a 7GB database, and found a lot of unneeded records, and deleted them. After shrinking, the database size is 4.6GB, and 748 MB is free (according to database properties).
However, when I execute exec sp_spaceused
, I have interesting results:
DatabaseName Database_size unallocation space
xxxxxx 4726.50 MB 765.42 MB
Reserved Data index_size unused
3899472 KB 1608776 KB 1448400 KB 842296 KB
Any ideas, how can I release at least some of this unused space? Also I know table, which occupied it.
Update: is it worth to trying to rebuild table indexes?
ALTER INDEX ALL ON Production.Product REBUILD
Solução
After index recreation, using this command:
ALTER INDEX ALL ON Production.Product REBUILD
and than I run SHRINK command again - end up with 2.5G database.
Outras dicas
First set recovery mode to simple, make backup and shrink all files (data and logs) seprately; use 'move pages to start of database' (or how exactly that is named) option for shrinking.
Then you may consider index defragmenting, helped us in similar circumstances.
If you've already shrunk your database, then give DBCC SHRINKDATABASE TRUNCATEONLY
a try.