Anyone who discovers the event with the ID 40025 in the event display of an Exchange server has no immediate cause for concern, but should take action:
Source: MSExchangeIS
ID: 40025
Database "Database Name" ("Database GUID") has been offline-repaired (by eseutil.exe) one or more times in the past. However, although this ensures database-level logical consistency and may permit the database to be successfully mounted, Exchange-level logical consistency can no longer be guaranteed. Therefore, all mailboxes should be evacuated from the database and the database should be retired as soon as possible in order to eliminate the potential for unexpected behavior caused by Exchange-level logical inconsistency.
This event will continue to be emitted once per hour while the database is mounted as an urgent reminder to evacuate and retire the database as soon as possible.
The database specified in the event has probably already been restored from a backup or revived using ESEUTIL after a crash. The reason for event 40025 is that every repair attempt using ESEUTIL increases the repair count; as soon as the repair count is greater than 0, event 40025 is written to the log every hour.
The repair count can be checked using ESEUTIL, but the database must be offline for this:
eseutil /mh .\MDB1.edb | Select-String "Repair"
If the database cannot be shut down without further ado, the switch /vss can also be used so that the query works with an integrated database:
eseutil /mh /vss .\MDB1.edb | Select string "Repair"
The background to this is a revised support policy from Microsoft. The short version: Databases edited with ESEUTIL should not remain in operation any longer than absolutely necessary. A new database must therefore be created and the mailboxes moved from the old database to the new database.
Here is the original article on the changed support policy:
To rectify the error, a new mailbox database can be created. All mailboxes in the old database can then be moved to the new database without interruption.
You can move the mailboxes using the following commands, for example:
get-mailbox -Database MDB1 -ResultSize unlimited | New-MoveRequest -TargetDatabase MDB_Neu get-mailbox -Database MDB1 -Arbitration -ResultSize unlimited | New-MoveRequest -TargetDatabase MDB_Neu get-mailbox -Database MDB1 -Archive -ResultSize unlimited | New-MoveRequest -TargetDatabase MDB_Neu
The 3 commands are used to move all user mailboxes, system mailboxes and archive mailboxes from the "MDB1" database to the "MDB_Neu" database. If mailboxes for public folders are also stored in the database, these can be moved with the following command:
get-mailbox -Database MDB1 -PublicFolder -ResultSize unlimited | New-MoveRequest -TargetDatabase MDB_Neu
Once all mailboxes have been moved, the old database can be deleted.
A little tip: When creating the new database, pay attention to the limits of the old one and adjust the new database accordingly.