Exchange Server is a fantastic environment to work with as it offers various amazing features. However, recovery from a disaster or an issue can be a bit tricky as you may have to perform long recovery procedures.

When the database gets corrupted due to hardware issues, incompatible software, malware or ransomware attack, sudden loss of power, or lack of disk space, the first thing you refer to is the backup. Unfortunately, if you’re using the wrong backup software which is not Exchange Server aware or not compatible with the same version of Exchange, restoring from backup might be useless as it will not do any good.

In such situations, the database will not mount and as a result the users will not be able to send or receive emails, calendar event, or post in their public folders. Therefore, you need to get the service up and running as soon as possible.

You can repair Exchange databases with ESEUTIL. The first thing you need to do is open command prompt and run the EseUtil with the /mh parameter to check why the database is not mounting and see the state of the database.

To check the database state, run the command as given below:

Eseutil /mh M:\ExchangeDatabases\DB01\db01.edb

In the above image, you can see that the database state is showing as Dirty Shutdown. It means that there is damage to the database, log file is missing, or log file is damaged.

Now, if you have a physical server with no access to the backup or the backup is not healthy, you need to try to recover the damaged database/logs. If the backup is healthy, you need to take the difficult decision to restore from the last day’s backup. It means that you will lose any changes done post the backup. For example, if the server went down in the evening, this means that you will lose a whole day’s work.

The other option is to run a soft or hard recovery on the database. First, you can try to run the soft recovery. If there is a light damage to the database, there is a possibility that the soft recovery will work.

To perform the soft recovery, you can run the command using the /r parameter (as given below).

Eseutil /r /l "M:\ExchangeDatabases\DB01\Logs" /d "M:\ExchangeDatabases\DB01"

Depending on the size of the database, this may take some time. When the process is complete, you need to rerun the EseUtil with the /mh parameter to reconfirm the database state. If the database state is in Clean Shutdown, you can safely mount the database.

Note: If the process is successful, it is highly recommended to create a new database and move all the mailboxes from the recovered database to the new one and decommission the database. This will ensure a fresh start to the mailboxes in the new database. This should be taken into consideration for both soft and hard recovery.

If soft recovery fails, you can perform the hard recovery. This method should only be used as a last resort due to the following reasons:

-         1.  Not 100% guarantee that this will fix the problem

-         2.  Microsoft will not support you if they find out that the database was hard recovered

-         3. You must accept data loss as hard recovery purges any data that is deemed corrupted

Before proceeding with the procedure, you must ensure that a backup of the database is in hand and there is ample space available (about the same size of the database) for the operation.

To perform hard recovery, you need to run the command as given below:

Eseutil /p "M:\ExchangeDatabases\DB01\db01.edb"

Once you run it, you will be immediately prompted to accept the data loss. It will not continue until you acknowledge and accept data loss.

Once the process is complete, you must check the state of the database. If the state is in Clean Shutdown, you can go ahead and mount the database.