Issues concerning a single user’s mailbox malfunctions are nothing peculiar in web administrator’s everyday work. The scope of such issues is pretty wide, starting from the wrongly displayed number of public folders in mailbox view, to problems with search items or with access to folders. These issues particularly concern shared mailboxes with a high number of active users. To overcome these problems admins usually used three most popular solutions:
- Mailbox data export to PST files. An Exchange administrator deletes the current mailbox and creates a new one, where he/she imports the previously exported PST files.
- An administrator completely dismounts the whole database from the server, and then using the Isinteg tool repairs the dismounted database. Basically, this solution has two major flaws. It is time-consuming (it depends on the size of the database), and it suspends Exchange services availability not only for the malfunctioning mailbox, but for all mailboxes within the database.
- An administrator recovers a backed up version of the current database what results in the partial loss of the newest data.
All above mentioned solutions appeared insufficient for Exchange administrators in meeting demands of nowadays IT environments. It all has changed with the emergence of Exchange 2010 SP1, and the cmdlet called New-MailboxRepairRequest.
These are the most important functionalities of the new cmdlet:
- It works online with databases, so there is no need for dismounting the databases to conduct necessary repairs and error fixes.
- It allows for making repairs in a single user mailbox or in the whole database with no necessity for its dismounting (totally online!).
The cmdlet fixes 4 types of mailbox corruptions:
- Errors in the search folders (SearchFolder).
- Errors that refer to the displayed number of items and their sizes in folders (AggregateCounts).
- Errors connected with the displayed content in folders (FolderView).
- Errors in the folder structure within a mailbox (ProvisionedFolder).
Whenever New-MailboxRepairRequest is used, access will be restricted to only this mailbox that is being currently repaired. In case there are repairs to be made on a whole database, access will be restricted to a currently processed mailbox. It is also worth to mention that the maximum number of active repair processes on a mailbox-level within a database ranges from 1 to 100. There is no single command to hold on the cmdlet’s action, however, to cease its functioning you need to dismount the database or kill its engine (Exchange Information Store).
The cmdlet goes as follows:
New-MailboxRepairRequest –Corrupted_object <name> - CorruptionType <corruption_type>
- Corrupted_object – Database or Mailbox; you can repair a database or a single mailbox within a database, it is impossible to use two objects in one cmdlet. You can also repair a user archive mailbox by just adding the -archive switch.
- Corruption_type (at least one is required as described above)
In the cmdlet you may include:
DetectOnly – it allows to check up a mailbox or database without making any repairs
In the below given example, we repair all possible corruption types in exemplary user7’s mailbox:
New-MailboxRepairRequest –Mailbox email@example.com –CorruptionType SearchFolder, AggregateCounts, ProvisionedFolder, FolderView
The following cmdlet example checks up the database for any errors in the catalogue structure without making any repairs:
New-MailboxRepairRequest –Database “Mailbox Database 1643455454” –CorruptionType ProvisionedFolder –DetectOnly
The cmdlet status check
One of the things about New-MailboxRepairRequest is that it doesn’t give back any feedback information in Exchange Management Shell. Therefore, you need to look for feedback logs in the branch Application in Event Viewer, under source MSExchangeIS Mailbox Store.
The following events should be logged in:
- 10047 A mailbox-level repair request started
- 10064 A Public Folder repair request started
- 10048 The repair request successfully completed
- 10050 The mailbox repair request task skipped a mailbox
- 10059 A database-level repair request started
- 10062 Corruption was detected
Please note! A new cmdlet in Exchange 2013 has appeared. It allows to run a repair status check for a single mailbox or database: Get-MailboxRepairRequest.
The new cmdlet brings in the solution that has been awaited by many Exchange administrators for a quite long time. Now they don’t need to solve these sort of problems during off-time hours, or on weekends. The new solution surely speeds up repair processes and doesn’t affect Exchange databases availability.