Skip to main content

On This Page

Exchange Database Recovery: Diagnosing JET Errors -1018, -1022, 528, and 548

3 min read
Share

These articles are AI-generated summaries. Please check the original sources for full details.

Exchange Database Won’t Mount After Shutdown: The Complete Diagnostic Flowchart (JET -1018, -1022, 528, 548)

Microsoft Exchange Server relies on the Extensible Storage Engine (ESE) to manage mailbox data through a two-phase write process involving .edb files and transaction logs. When a system fails to shut down cleanly, the database is flagged as inconsistent, and the Information Store service will refuse to mount it to protect data integrity.

Why This Matters

In technical environments, the gap between ideal high-availability models and reality often results in ‘dirty shutdown’ states caused by power failures or storage disconnects. Relying on destructive native tools like eseutil /p without proper diagnosis is a critical failure point that often results in the permanent purging of mailbox data rather than its recovery.

Key Insights

  • JET error -1018 (JET_errReadVerifyFailure) occurs when a 4 KB page checksum fails, indicating storage-layer corruption or incomplete writes.
  • JET error -1022 (JET_errDiskIO) is an infrastructure problem where the ESE cannot access the physical disk, often due to RAID failure or SAN timeouts.
  • Error 528 (JET_errMissingLogFile) halts mounting when the sequential transaction log chain is broken, frequently caused by manual log deletion or circular logging.
  • Error 548 (JET_errBadLogSignature) signals a mismatch between the database header and log signatures, often following a restore where old logs were not cleared.
  • Microsoft documentation identifies eseutil /p as a last-resort hard repair that destroys data by purging corrupt pages to restore database structure.

Working Examples

Run an integrity check to confirm JET -1018 page-level corruption.

eseutil /g "C:\Program Files\Server15\DB\Name\DBName.edb"

Check the database header for ‘Dirty Shutdown’ status and the ‘Log Required’ range.

eseutil /mh "C:\...\DBName.edb"

Verify physical disk health via SMART data when encountering JET -1022 errors.

wmic diskdrive get status

Examine log file signatures and generation numbers to diagnose Error 548 mismatches.

eseutil /ml <logfile>

Practical Applications

  • Diagnostic Flow: Use eseutil /mh to identify the ‘Log Required’ range before attempting soft recovery to ensure all necessary transaction logs are present.
  • Storage Recovery: For JET -1022 errors, fix the storage layer or copy files to a healthy volume before running any eseutil repair commands.
  • Pitfall: Executing eseutil /p as a first response to mount failures, which results in permanent data loss of all items on corrupted database pages.
  • Prevention Strategy: Disable circular logging in production environments to ensure a full transaction log chain is available for point-in-time recovery after a crash.

References:

Continue reading

Next article

Securing Higher-Ed AI: Fixing FERPA Compliance in RAG Pipelines

Related Content