Mailbox Repair

Mailbox repair is a method in which the systems checks a mailbox or Database for a corrupted mailbox and attempts to repair it. We will go through what is this process consists of. Understanding is the first step. Then we will look at how to run a repair. One this which needs to be noted that during the repair process, the mailbox cannot be accessed. Also if you run a pair against a Database, the only way to stop the process is to dismount the Database. Therefore, ensure you understand why you may need to run it against the Database. There are also some variance between some commands and process between Exchange 2010 and 2013 for example. Why would you need to repair a mailbox? Corrupted data on an mailbox or Database can cause erratic client-server behaviours: Outlook may not synchronize; items may not archive properly even Microsoft Outlook hangs or may freeze etc. Let us look at how we accomplish this.

First we need to check if we have another empty or non-working Database. Thereafter, we need move that mailbox to the quieter Database. You can run the a mailbox move by running the following command:

New-MoveRequest -Identity “” -TargetDatabase “temp-db02”

This will then move the mailbox to that quieter Database. Depending on the size of the mailbox, you can gauge how long it will take. If you do not have the luxury of this then begin with Detecting first against a mailbox by running this command:

New-MailboxRepairRequest -Mailbox <> -CorruptionType ProvisionedFolder,SearchFolder,AggregateCounts –DetectOnly | fl

We have appended the command with some flags and this is what is checked in the flags:

  • Search folder corruptions (using the SearchFolder value of the CorruptionTypeparameter)
  • Aggregate counts on folders that aren’t reflecting correct values (using the AggregateCounts value of the CorruptionTypeparameter)
  • Views on folders that aren’t returning the correct content (using the FolderView value of the CorruptionTypeparameter)
  • Provisioned folders that are incorrectly pointing into parent folders that aren’t provisioned (using the ProvisionedFolder value of the CorruptionTypeparameter)


This would an example of the command run against a Database:

New-MailboxRepairRequest -Database MBX-DB01 -CorruptionType ProvisionedFolder,SearchFolder,AggregateCounts –DetectOnly | fl

Then depending on the corruption report, in order to run a mailbox repair, run the following as an example:

New-MailboxRepairRequest -Mailbox <> -CorruptionType FolderView

If you can locate the flag on the mailbox by running either Get-mailbox –Mailbox | fl , locate the “Repair Required” is under a CustomAttribute, run the following command which repairs all corruption types for mailboxes that have CustomAttribute2 set to Repair Required.

Get-Mailbox -Filter {CustomAttribute2 -like “Repair Required”} | New-MailboxRepairRequest -CorruptionType SearchFolder,AggregateCounts,ProvisionedFolder,FolderView

To avoid any performance problems, Exchange enforces limits on the number of simultaneous repair requests that can be submitted per server. Only one request can be active for a database-level repair; up to 100 requests can be active for a mailbox-level repair per serve




Be the first to comment

Leave a Reply

Your email address will not be published.


This site uses Akismet to reduce spam. Learn how your comment data is processed.