If the Exchange server database service is denied write access to its own database files (*.edb) or to the checkpoint file (*.chk), errors similar to the following may be seen: MSExchangeIS (xxxx) Unable to write a shadowed header for file [path\filename].
Common causes of this issue include:
- Another process has “stolen” the file. A virus checker may mistakenly quarantine a file, or a backup process may temporarily deny access. In this case, you may see Error -1032 in the Description section of Event ID 439. Error -1032 is equivalent to JET_errFileAccessDenied, which is defined as cannot access file — the file is locked or in use.
- A disk or controller failure has occurred, and access to the entire drive has been lost, sometimes temporarily. Check the System Log for I/O or drive errors near the time of the 439 Event. In this case, you could see Error -1022 in the description of Event ID 439. Error -1022 = JET_errDiskIO = Disk IO error. The -1022 error is a generic error that appears whenever a disk input/output (I/O) problem prevents Exchange from gaining access to a requested page in the database or to a transaction log.
- Permissions have been removed from the folder where the file resides.
- The file has been marked read-only. This is most likely to happen to a checkpoint file.
- The folder containing the file has been renamed or deleted. This is also mostly likely to happen to a checkpoint file.
- Check for alerts related to full disks and resolve as necessary.
- To troubleshoot such errors, you must determine what has suddenly blocked the database service from access to its files. In many cases, restarting the affected server “breaks” the lock if you cannot find another way to do it.
- Confirm that there is sufficient access to the disks.
- If the database is still running, you may have to use Move Mailbox or ExMerge to move the mailboxes to another server.
- If the database will not mount, you may need to restore from online backup. If there is no valid backup, as a last resort, you may need to repair the database with Eseutil /P, run isinteg -fix until all fixes are removed, and then mount the database and ExMerge to a new, blank database.