Resolve Jet error codes 1601 to 1605 in Exchange
Solved Email & Outlook
MS
Michael Scofield
September 9, 2019
2 replies
5,680 views
Reviewed by moderators

Working with an Exchange EDB and hitting Jet errors in the 1601 to 1605 range during operations. What do these mean and how are they resolved?

These come up with eseutil and database operations.

Accepted Answer
Verified by Edwin J. Hoffer, Email Systems Specialist ยท Reviewed September 2019

The Jet errors are the Extensible Storage Engine, the database engine under Exchange, reporting problems and the 1601 to 1605 range clusters around missing or not found conditions, so what they mean then how to handle them:

What the range means: these JET_err values in the 1600s generally indicate the engine cannot find something it expects, a record, a key, a node not found within the database structure, JET_errRecordNotFound and its neighbors. In the context of Exchange and eseutil, they typically surface during recovery or repair operations when the engine encounters structural inconsistencies, pointers to data that is missing or an index referencing records that are not there, symptoms of database corruption or an incomplete state rather than a single simple fault.

The context that determines the response: these errors appearing during eseutil operations on an EDB point at the database's integrity, so the response follows the standard EDB recovery hierarchy rather than a specific per error fix. Check the shutdown state with eseutil /mh, since a dirty shutdown with missing logs can produce not found conditions that a proper soft recovery resolves. Attempt soft recovery with eseutil /r if the transaction logs are present, replaying them to bring the database consistent, which resolves inconsistencies from an incomplete shutdown cleanly.

The repair path when soft recovery cannot help: if the logs are lost or soft recovery fails and these errors persist, a hard repair with eseutil /p addresses corruption but at the cost of discarding what it cannot fix, potentially losing data, making it a last resort after backups. Following /p, eseutil /d to defragment and isinteg or the newer New-MailboxRepairRequest to fix logical integrity complete the repair sequence, the full path for a genuinely corrupted database.

The practical framing given the risk: Jet errors in this range on a database that matters warrant caution, since the repair tools can lose data, so the order is preserve the EDB and logs by copying them first, attempt the non destructive soft recovery and reserve hard repair for when there is no better option and the data is backed up. Where the database is critical and the corruption significant, third party EDB recovery tools or professional recovery often extract more mail than an aggressive eseutil /p, worth considering before the destructive repair, the same reasoning as any serious database corruption.

eseutil /mh showed a dirty shutdown and the logs were present, so soft recovery with /r replayed them and the not found errors cleared without any destructive repair. Copied everything first per the caution. Understanding these as the ESE engine reporting missing structure rather than random errors made the recovery hierarchy make sense.