Exchange Database Recovery: Diagnosing JET Errors -1018, -1022, 528, and 548
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
Post-Mortem: Automated Backups Fail, SII Breathing Down Your Neck
45KB backup file caused 6 months of SII-compliant data loss in Chilean SMEs.
The Problem with Unmonitored Backups
Database backups are crucial for data loss prevention, but silent failures in cron jobs can leave systems vulnerable – costing organizations valuable data and recovery time.
BugiaData Conversion Catalyst: Streamlining Database Seeding with Relational Templates
BugiaData's Conversion Catalyst update introduces relational templates and synthetic data tools to eliminate manual database seeding scripts by 2026.