Repairing Exchange Databases
Topic Last Modified: 2007-01-10
Try to repair an Exchange database only as a last resort, because such an attempt can lead to loss of data.
You can repair Exchange database files (.edb files) by using Eseutil.exe and Isinteg.exe. You can also use recovery storage groups to salvage data from damaged databases. For information about using recovery storage groups, see Using Exchange Server 2003 Recovery Storage Groups.
By default, some tools such as Eseutil and Isinteg are installed to the ..\exchsrvr\bin directory during Exchange setup. To run these tools globally on your server (from any command prompt), add the full path of ..\exchsrvr\bin to your Windows Server 2003 system path.
For detailed instructions, see How to Add the ..\exchsrvr\bin Directory to Your Windows Server 2003 System Path. After adding \bin to your system path, you should be able to run Eseutil and Isinteg from any command prompt on your server. You should also be able to run any other tools stored in the ..\exchsrvr\bin directory.
This section contains general information that you should know about if you use Eseutil or Isinteg to repair Exchange databases.
For more information about using Eseutil or Isinteg, see Microsoft Knowledge Base articles 812357, "How to maintain your Exchange database after you repair by using the Eseutil /p tool in Exchange Server 5.5, in Exchange 2000 Server, and in Exchange Server 2003" and 182081, "Description of the Isinteg utility." Consider the following information when repairing Exchange databases:
Repairing Exchange databases with Eseutil and Isinteg can cause lost data in the Exchange databases you repair. For this reason, copy the database files you are repairing before attempting the repair process. (For information about how to copy your database files, see "Moving or Copying the Existing Versions of the Database Files That You Are Restoring (Optional)" in Recovering an Exchange Database.) Because you cannot undo changes that were made to a database during the repair process, only use Eseutil and Isinteg as a last resort. As discussed earlier, it is recommended that you recover a damaged database by restoring a backup set instead of repairing a database.
If you use Eseutil to repair an Exchange database, you must have sufficient free disk space for Eseutil to run. If you are running Eseutil /P you must have approximately 20 percent of the size of the database you are repairing on the same drive. If you do not have that much room, you can use command-line switches to redirect the temp files to a different location. If you are using Eseutil /D, you must have 110 percent of the size of the database. While you can redirect the temp files to another drive as you can with the /P switch, it will dramatically increase the time it takes to repair your database. If it is possible, have ample free space when using the /D switch.
Using the Eseutil and Isinteg utilities to repair a database file takes a substantial amount of time. Typically, it takes much longer to repair a database than it does to restore a database from backup.
If both utilities run successfully (for example, if there are not any errors at the end of the last Isinteg run), the database is generally considered to be repaired and ready to replace the damaged database.
If you plan to put the repaired database back in production you must:
Run Eseutil /P.
After Eseutil /P completes successfully, run Eseutil /D.
After Eseutil /D completes successfully, run Isinteg –fix –test alltests.
If you only plan to salvage data from the disk, and do not plan to put it back in production, you can skip step 2 earlier in this section. Skipping step 2 will save time in your recovery process but might cause the database to have indexing and space allocation errors. These errors are not what you want in a production environment, but are unlikely to affect your ability to salvage data from the database.
If Eseutil and Isinteg cannot fix every error in the database, it is best not to discard a repaired database. After Isinteg is completed, it should report zero errors in the database. If the error count is greater than zero, run Isinteg again until the count becomes zero or the count does not decrement on successive runs. If you cannot get the error count to zero, do not leave the database in production. Salvage data from it by merging or replicating folders to a new database or by moving mailboxes to a new database.
You can restore data from a damaged database by using another server. For example, you can restore a damaged database to another server, extract data from it using the Exmerge utility, and then insert the data into a new database file. You can also use a recovery storage group on the same server to restore data from a damaged database. For more information about recovery storage groups, see Using Exchange Server 2003 Recovery Storage Groups.
By default, Eseutil and Isinteg are both installed into the <drive>\Program Files\Exchsrvr\bin directory when Exchange is installed.