Tip

What to do when you can't delete an Exchange mailbox database

The seemingly simple task of deleting an Exchange Server database can sometimes be less than simple. I've seen a number of situations in which Exchange Server appears to have trouble letting go of unwanted databases. So what do you do when you can't delete a database?

The most common cause for this problem is that Exchange Server won't allow you to delete a mailbox database if that database contains an existing user mailbox. Determine which mailboxes exist within the database and then move those mailboxes to a different database.

To get a list of the user mailboxes that exist within a database, enter the following command into the

    Requires Free Membership to View

Exchange Management Shell, but replace <database name> with the actual mailbox database name:

Get-Mailbox –Database "<database name>"

If you determine that the database contains user mailboxes, you can issue a move request for those mailboxes by using this command:

Get-Mailbox –Database "<database name>" | New-MoveRequest –TargetDatabase "<destination database name>"

Exchange Server 2013 also makes use of public folder mailboxes. To remove a public folder mailbox, you'll use the same method as you do to remove user mailboxes, but you'll need to use the PublicFolder switch. For example, if you wanted to see a list of public folder mailboxes, you would use the following command:

Get-Mailbox – Database "<database name>" –PublicFolder

Similarly, use this command to move a public folder mailbox:

Get-Mailbox –Database "<Database Name>" –PublicFolder | New-MoveRequest –TargetDatabase "<target database name>"

Notice that I didn't have to use the PublicFolder switch in the New-MoveRequest cmdlet.

It's not just user mailboxes and public folder mailboxes that can be problematic. Archive mailboxes can also cause problems. Exchange Server tries to help you by showing an error message that actually lists the command used to view a list of archive databases. The command Microsoft provides is:

Get-Mailbox –Database DatabaseID –Archive

However, this command doesn't always work as it should. A workaround is to run the Get-Mailbox cmdlet and filter the output based on the ArchiveDatabase attribute. This means compiling a list of mailboxes where the archive database attribute matches the name of the database you're trying to delete.

As an example, imagine you need to delete a database called "DB1." If you wanted to see a list of all the archive mailboxes within the database, you could use a command like this:

Get-Mailbox | Where-ArchiveDatabase –eq "DB1"

Moving mailboxes after they've been identified

Identifying the archive mailboxes is only the first step in deleting an Exchange Server database. Once those mailboxes have been identified, they need to be moved.

Once again, this can be accomplished using a move request. The New-MoveRequest command can be appended to the command that was used to identify the archive mailboxes. The full command might look like this:

Get-Mailbox | Where-ArchiveDatabase –eq "<database name>" | New-MoveRequest –ArchiveOnly –ArchiveTargetDatabase "<target database name>"

Notice that this time the move request used the ArchiveTargetDatabase switch instead of the TargetDatabase switch. We also used the ArchiveOnly switch.

Once you remove the mailboxes from a database, you should be able to delete the database from the Exchange Administrative Center. However, because you are already in the Exchange Management Shell, it might be easier to remove the database using the command line:

Remove-MailboxDatabase –Identity "<mailbox database name>"

The key to being able to remove a mailbox database is to make sure there are no mailboxes in the database. Although this tip focuses on moving mailboxes to another server, you can delete the mailboxes using the Remove-Mailbox command.

About the author:
Brien Posey is an eight-time Microsoft MVP for his work with Windows Server, IIS, Exchange Server and file system storage technologies. Brien has served as CIO for a nationwide chain of hospitals and healthcare facilities, and was once responsible for IT operations at Fort Knox. He has also served as a network administrator for some of the nation's largest insurance companies.

This was first published in January 2014

There are Comments. Add yours.

 
TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.