We are running an Exchange 2010 Standard server with two mailbox databases. We want to make these databases as small as possible since the space is needed for something else.

How I have two options: - Offline defrag the DB's >> Downtime - Create a new database, move all boxes from the old to the new DB, then delete the old DB. Do these steps again for the second database.

But, is this recommended? I like option two since I have no downtime. But should I pay special attention to system mailboxes and stuff like that?


  • How large are we talking about here? Do you have a maintenance window available for possible downtime? – Reaces Feb 13 '15 at 12:46
  • We are talking about 2 DB's of around 100gb each. So 200gb total. Downtime is possible, but rather not off course. If there are no downsides at moving the mailboxes, I prefer that path. – Mbrouwer88 Feb 13 '15 at 12:47
  • 3
    How much whitespace are we talking about you reclaiming? I'd personally be wary of words like "as small as possible since the space is needed for something else". You could find yourself in the future running out of disk space for Exchange. – TheCleaner Feb 13 '15 at 14:18
  • Add space to your server or delete mailbox user or limit their mailbox usage.... As you can be sure it will fill again... – yagmoth555 Feb 13 '15 at 14:32
  • 1
    We want to make these databases as small as possible since the space is needed for something else - That sounds like you're doing something that may not be recommended. Exchange servers should fill no other role, IMO. They should be Exchange servers and you should build them to suit the needs of Exchange, not something else. What is this something else that you need the disk space for? – joeqwerty Feb 13 '15 at 22:51

The second option is definitely the best one, as it involves no downtime and no risk of damaging your database (hey, that can happen during a defrag); just make sure to turn on circular logging on both databases between which you are moving mailboxes, or the transaction logs will quickly fill up your disk space (and then turn it back off as soon as you finish moving those mailboxes).

On the subject of transaction logs: are you taking regular backups with an Exchange-aware backup software? This is not only for the safety of your data, but also because otherwise transaction logs will never be truncated, because Exchange only truncates them after a successful backup (and you shoud definitely not delete them manually).

Last but not least: while shrinking your database size might look like a good temporary solution, please keep in mind that your database will grow back again as soon as more messages get stored in it; make sure to account for database growth, or at the very least to use mailbox quota to avoid people overfilling it; an Exchange server running out of disk space is a situation in which you just don't want to be.

About hidden system mailboxes: the standard Get-Mailbox cmdlet will not even show them, but you can use the -arbitration parameter to list them:

Get-Mailbox -Arbitration -database YourDBName

You can then pipe the command output into whatever command you use to move the mailboxes to another database.

  • Hi Massimo, thanks you the answer, even though this question is a year old :). We went for option two, did the job really fine! – Mbrouwer88 Mar 18 '16 at 22:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.