Exchange Server throws "Unable to Mount Database" with error codes hr=0x80004005 and ec=-528 when the database files are in a dirty shutdown state. This happens after unexpected server restarts, storage failures, or incomplete transactions.
The Fix
First, check the database state from Exchange Management Shell:
eseutil /mh "E:\MailboxDatabase\Mailbox Database.edb"
Look for "State: Dirty Shutdown" in the output. If dirty, run soft recovery:
eseutil /r E00 /l "E:\MailboxDatabase" /d "E:\MailboxDatabase"
Replace E00 with your actual log prefix (check your log file names like E0000001.log).
After recovery completes, verify the state changed to "Clean Shutdown":
eseutil /mh "E:\MailboxDatabase\Mailbox Database.edb"
Then mount the database:
Mount-Database "Mailbox Database"
If Soft Recovery Fails
When log files are missing or corrupted, soft recovery won't work. Run hard repair as a last resort:
eseutil /p "E:\MailboxDatabase\Mailbox Database.edb"
After hard repair, rebuild the content index:
Stop-Service MSExchangeFastSearchStop-Service HostControllerServiceRemove-Item "E:\MailboxDatabase\Mailbox Database" -Include ".ci",".dir",".wid",".000",".001","*.002" -RecurseStart-Service MSExchangeFastSearchStart-Service HostControllerServiceHard repair may cause data loss. Run New-MailboxRepairRequest afterward to check for logical corruption.
The ec=-528 code specifically means JET_errMissingLogFile, indicating transaction logs needed for recovery are missing. Always verify your Exchange backups before running hard repair.

