Years ago a client of mine had to do this on a fairly regular basis. The server was taken off line to users and the process took about an hour. The process was
1. remove all indexes
2. shrink the db
3. rebuild the indexes
Maybe they used a different process and didn't use the 'shrink' option but all databases leave empty spaces when records are deleted or modified and in time you then either need a bigger server of you need to compact it is some way. It wasn't my area but that was what I was told.