Eseutil and Isinteg are two neat little tools used to defragment and repair Exchange databases. Eseutil deals with the Extensible Storage Engine (a generic database engine which can be used by different applications including Exchange and Active Directory) and Isinteg deals with checking Information Store integrity.
Both these tools can be used to help solve issues such as the inability to mount a mailbox store and the failure of the Information Store service to start. They can report on the health of the Information Store and help you determine what actions, if any, need to be taken.
TIP: When troubleshooting such issues - or any Exchange issues for that matter - the event logs are a good place to start. Check the events related to Exchange to see what information they give you about the problem. Some examples of event logs you might see can be found at the following Microsoft KB article:
The Exchange database store may not mount in Exchange Server 2003 or in Exchange 2000 Server, and event IDs 9175, 486, 455, 413, and 5 may be logged
As always I recommend you test the use of these tools in a test environment before running them on a production server. Also be sure to backup the Exchange databases and log files before doing anything. As good as they may sound these tools should be used with caution and as a last resort - there is a risk of losing data.
Eseutil is used to defrag, check the integrity, and repair an Exchange database. It is installed with Exchange and can be found in the \Exchsrvr\bin folder. Eseutil examines the structure of the ESE database tables and records and has eight modes of operation, including Defragmentation, Recovery, Checksum, Integrity, Repair, File Dump, Copy File, and Restore.
|Defragmentation (/d)||Performs offline compaction of a database.|
|Recovery (/r)||Performs recovery, bringing all databases to a clean-shutdown state.|
|Integrity (/g)||Verifies the integrity of a database.|
|Checksum (/k)||Verifies the checksums of a database, streaming file, checkpoint file, or log file.|
|Repair (/p)||Repairs a corrupted or damaged database.|
|File Dump (/m)||Generates formatted output of various database file types.|
|Copy File (/y)||Copies a database, streaming file, or log file.|
|Restore (/c)||Restore information.|
Type the following from the command prompt for help with each of the modes of operation:
NOTE: Although Exchange 2003 performs a nightly online defrag of the Exchange database, you may need to perform an offline defrag if you've deleted a lot of objects from the store, recently migrated a lot of new users to the mailbox store or when you notice that there is a significant amount of free space in the database and you want to reclaim it. An offline defrag will compact the database and free up the unused space. It is important that a defragmentation takes place after you've used the /p (repair) switch.
For the purpose of this article I will explain how to verify the integrity and checksums, repair a database and defragment a database - all useful when troubleshooting a corrupt email store.
Verifying database integrity and checksums
To run Eseutil in Integrity mode, use the following command:
Eseutil /g <path_to_edb_file>
Eseutil /g "e:\program files\exchsrvr\mdbdata\priv1.edb"
Figure 1 - Eseutil in Integrity mode
Once the Integrity check is complete, the results will be shown at the bottom. A successful check will show "Integrity check successful".
To run Eseutil in Checksum mode, and verify page-level integrity of the Information Store databases, use the following command:
Eseutil /k <path_to_edb_file>
Eseutil /k "e:\program files\exchsrvr\mdbdata\priv1.edb"
The command will then run on the EDB file and its corresponding STM file. To ignore the STM file and only check the integrity of the EDB file, use the /i switch after specifying the path to the EDB file.
Figure 2 - Eseutil in Checksum mode
You should see '0 bad checksums' in the results report. Bad checksums are an indication of a corrupt database store (the Information Store service will probably fail to start too). Check the event logs for events related to MSExchangeIS.
Repairing the Exchange Databases
Use the Eseutil /p switch to repair Exchange databases. Before running this command ensure that the Exchange databases really cannot start, that you have made a backup of the databases and that free disk space is equal to at least 20% of the database size.
To run Eseutil in database repair mode, use the following syntax:
Eseutil /p <path_to_edb_file> /t<temp_edb_file_location>
Eseutil /p "e:\program files\exchsrvr\mdbdata\priv1.edb" /t c:\tempedb1.edb
Optionally you can specify other switches to either run an integrity check before repairing, ignore mismatch errors, create an empty STM file (if you don't have one) and so on and so forth. Refer to the help documentation within Eseutil for more information on switches.
Before the repair is initiated a warning message will appear stating that a repair should only be done on damaged or corrupt databases and that it may cause information to be lost. Press OK to go ahead and start the repair process or Cancel to back out.
Figure 3 - Warning message from Eseutil in Repair mode
Once the repair process has started, it will show you the progress and report back with the results when it completes. Notice the note at the end recommending a full backup. After doing so I would also recommend moving the mailboxes to a new mailbox store and then deleting the old one once everything is smoothly up and running again.
Figure 4 - Eseutil in Repair mode
Performing an offline defragmentation
To run Eseutil in defragmentation mode, use the following syntax:
Eseutil /d <path_to_edb_file> /t <temp_edb_file_location>
Eseutil /d "e:\program files\exchsrvr\mdbdata\priv1.edb" /t c:\tempdefrg.edb
You can also set some optional switches to keep the temporary database, not defrag the STM file, set the streaming file name, and so on.
Figure 5 - Eseutil in Defragmentation mode
The time it takes to defrag the database does not depend on how large the database is but how much free space is available within the database. After an online defrag is performed, the MSExchangeIS Mailbox Store event logs will give you an indication of how much free space there is.
The default behaviour is that once the defragmentation process is complete, the production databases are replaced with the temporary databases and then the original production database is deleted.
The final status will be reported at the bottom once the whole operation is complete.
Isinteg is a utility used to test and repair logical inconsistencies in Exchange databases; to check and fix the integrity of the Information Store databases. It is the only utility that understands the Exchange database as an actual Exchange database. By this I mean it knows about the relationships that map the tables and records to actual folders and messages, whereas Eseutil didn't; it only saw the tables and records as being part of a generic ESE database.
To use the Isinteg tool, open a command prompt and navigate to the \Exchsrvr\Bin folder.
The Isinteg tool can be run in "check only" or "check and fix" mode. "Check only" mode will simply run through the tests and report back to you with its findings. "Check and fix" mode will run through the tests and attempt to fix any problems it finds along the way, then report back to you with the results. I recommend you run "check only" mode before proceeding with any attempted fixes.
To run the tool in "check only" mode (also known as Default mode), you do not need to specify any additional switches when running Isinteg from the command prompt. To run "check and fix" mode, use the "-fix" switch. The larger the database, the longer it will take to perform the test.
NOTE: Before running Isinteg, ensure that the mailbox store is dismounted and that the MSExchangeIS service is started.
Figure 6 - Performing alltests with Isinteg
Don't worry about any warnings shown in the results, but do take notice of any errors. There should be zero (0) errors reported, but even if there is 1, run Isinteg again. With every run of Isinteg the error count should decrease until it reaches zero (0). If after running Isinteg multiple times you are unable to reduce the error count, you can consider that database not fit for a production environment (at which point you should take the necessary steps to move the mailboxes to another store).
For more information about how to use Isinteg type the following from the command prompt:
Today we looked at Eseutil and Isinteg; two handy resources used when you need to recover from failures in the store. For database repair you'd first use Eseutil to fix a problem with the actual records and tables, and then Isinteg to fix the logical inconsistencies and relationships between the tables and records.
Remember to use these tools with caution. Always make a backup of your databases and keep in mind that they cannot guarantee a 100% success rate. Having said this, in my experience they have been very reliable indeed.
How to defragment with the Eseutil utility (Eseutil.exe)
XADM: Exchange 2000 Server Eseutil Command Line Switches
Description of the Isinteg utility
Exchange Command-Line Parameters for the Isinteg.exe Tool
It appears the information you have on this document is mostly from MSFT's document on the subject. It has the same omission which is required knowledge to run ININTEG after a repair and defrag.
You must remove ALL files except PRIV1.EDB, PRIV1.STM, PUB1.EDB, PUB1.STM or you will experience problems getting ISINTEG to run.