Summary: Exchange database stores mailboxes and other critical business data. A regular backup can help you safeguard the Exchange mailbox database and prevent data loss situations. However, if the database dismounts due to integrity issues caused by logical corruption, it can lead to downtimes and adversely affect the business. Thus, it’s critical to run integrity checks on the Exchange mailbox database to avoid such disasters. In this guide, we’ve discussed the methods to check Exchange 2013 mailbox database integrity.
ISInteg or Information Store Integrity Checker is a popular utility to check Exchange mailbox database integrity. However, the ISInteg runs only on an offline database. Thus, administrators had to dismount the database to run integrity checks, which causes downtime. To avoid downtime, administrators need to work late at night after business hours.
You may also use the EseUtil commands in Exchange 2013 to check and fix severe mailbox database integrity issues and recover a corrupt or damaged Exchange database. The EseUtil works on the offline database and can also check or validate VSS database backup integrity.
However, with the release of Exchange Server 2010 SP1, Microsoft introduced two new Exchange Management Shell (EMS) cmdlets for checking and fixing the integrity issues in the Exchange mailbox database. Unlike ISInteg and EseUtil, you can run the New-MailboxRepairRequest and New-PublicFolderDatabaseRepairRequest cmdlets to check database integrity and fix inconsistencies without dismounting the database. In Exchange Server 2013, you can use these cmdlets to perform the following operations on a mailbox database:
- Check and fix mailbox database integrity without dismounting the database
- Repair mailbox corruption
- Repair corrupt or damaged search folders
Methods to Check Exchange 2013 Mailbox Database Integrity
Below we have discussed the methods to run integrity checks on the Exchange 2013 mailbox database to keep the database in a healthy state and prevent database termination (dismount).
Method 1: Use New-MailboxRepairRequest Cmdlet
The New-MailboxRepairRequest EMS cmdlet is available on an on-premises Exchange server. To run the EMS cmdlet to check the Exchange 2013 database health and detect the errors, follow these steps:
- Open the Exchange Management Shell (EMS) in your Exchange 2013 server.
- Then execute the following command in the EMS to run an integrity check on Exchange 2013 database and find errors:
|New-MailboxRepairRequest -Database <DatabaseName> -CorruptionType Folderview –DetectOnly|
The above command detects folder views for the mentioned database.
- You can add more parameters to check other corruption issues in the database, such as Search Folder or Provisioned Folder corruption. For instance,
|New-MailboxRepairRequest -Database <databasename> -CorruptionType ProvisionedFolder,SearchFolder,AggregateCounts,Folderview –DetectOnly|
- You may also use this cmdlet to check specific mailbox integrity and health.
|New-MailboxRepairRequest -Mailbox John -CorruptionType ProvisionedFolder,SearchFolder,AggregateCounts,Folderview|
To fix the Exchange 2013 database corruption error using the New-MailboxRepairRequest cmdlet, remove the -DetectOnly flag from the command.
However, you should run these cmdlets with the -DetectOnly flag after taking the database backup. This is critical to avoid issues if the cmdlet fails to fix the corruption or errors.
To check the status of New-MailboxRepairRequest, you can execute the Get-MailboxRepairRequest cmdlet.
|Get-MailboxRepairRequest -Database <DatabaseName> | Format-List|
If the CorruptionsDetected value is 0, the database has no errors and is healthy.
Also, you can check the Windows Event Viewer to track the integrity check and repair progress. The event log entry displays the following status when the integrity check and repair process start:
|Database level online integrity check for request d5ac954d-c1b6-40f4-bdbb-b11f00f118af started|
If the database integrity check and repair is successful, you will see the following status:
|Online integrity check for request d5ac954d-c1b6-40f4-bdbb-b11f00f118af completed successfully.|
Method 2: Use EseUtil to Check Exchange 2013 Mailbox Database Health
EseUtil or Extensible Storage Engine Utility is a command-line-based tool that you can use to run integrity checks on the Exchange 2013 database. However, it works on the offline database.
You can use the EseUtil when the New-MailboxRepairRequest fails. It can help you detect and fix severe integrity health issues with Exchange 2013 mailbox database.
The steps are as follows:
- Dismount the database using the Dismount-Database cmdlet,
|Dismount-Database -identity <database path>|
- Open Command Prompt window and then run the Eseutil /g cmdlet to check the database integrity and inconsistencies,
|Eseutil /g <PathToDatabaseFile\DatabaseName.edb>|
Ensure there is enough free storage space available on the disk for the temporary database that will be created during the integrity check. Otherwise, this check may fail. The command output displays the inconsistencies, if found. It runs in read-only mode and thus, safe to execute on the database.
If inconsistencies are found in the database, follow these steps to fix them:
- In the command prompt window, execute Eseutil /mh command to check the database state,
|Eseutil /mh <PathToDatabase\databasename.edb>|
This will display the database state as Clean Shutdown (healthy) or Dirty Shutdown.
- If it displays Dirty Shutdown state, you can perform soft recovery on the database using the following command:
|Eseutil /r <PathToDatabase\databasename.edb>|
- Then check the database state using the Eseutil /mh command.
If it still shows Dirty Shutdown state, you can perform hard recovery to fix the database damage. However, hard recovery fixes the database by purging the irrecoverable data from the database, leading to significant data loss.
Moreover, repairing an inconsistent database may not be enough as it may get damaged again. Thus, it is highly recommended to move the mailboxes from an inconsistent database to a new database after the repair.
A safer approach to fix database inconsistencies or corruption without data loss and move mailboxes safely to a new or existing database is to use an Exchange recovery software, such as Stellar Repair for Exchange. The software repairs the inconsistent database, extracts mailboxes, and saves them to PST format, which you can import into any mailbox database on Exchange 2013 Server or Office 365. You may also export the recovered mailboxes directly to the live Exchange server database or Office 365 using this software.
Database integrity checks are important as they give you insights into database health. It helps you detect database inconsistencies and errors that may result in corruption and dismount or termination of the database, leading to downtime. In Exchange Server 2013, you can use the New-MailboxRepairRequest cmdlet to repair the user mailbox database or New-PublicFolderDatabaseRepairRequest to check and repair Public Folder database integrity. You can run these cmdlets on an online database and avoid downtime. However, if the inconsistencies found are not fixed with these cmdlets, you will need to dismount the database and use the EseUtil commands to find and fix the inconsistencies.
You can also use Stellar Repair for Exchange to repair inconsistent databases and move the mailboxes from the unhealthy database to a healthy database on the same or another server directly. You may also use the software to recover mailboxes from severely corrupt or damaged Exchange database files to PST or export them directly to Office 365 with complete integrity and without any data loss.