Before you defragment a database using Eseutil, make sure you have read the Event id 1221 from your exchange server to figure out how much white space can be claimed.
Make sure you have free disk space equal to 110 percent of the end size of the database that you want to process (the end size being the current file size minus the size of the white space in the file). In most of the cases Eseutil and ISinteg are serious tools, and should not be used for an exchange task. If you don't need it do not use it. Making exchange unavailable is an outage, and it is not good for any business, unless you have indeed need for it. Dismount the database before defragmenting as Eseutil performs an offline defragmentation. During the offline defragmentation the dismounted database will be inaccessible to clients. In
Exchange System Manager, right-click the database that you want to defragment, and then click Dismount Store before you attempt to repair follow the first rule of thumb, Make a copy of the database files(s) before you repair them
Select do not mount mailbox at startup from the exchange system manager, For the mailbox stores you are trying to mount.
Below is the command line, how to stop a service on windows environment,
Stop information store service
net stop "microsoft exchange internet mail service"
net stop "microsoft exchange event service"
net stop "microsoft exchange message transfer agent"
Run Eseutil /P.
Eseutil /P c:\exchsrvr\mdbdata\DB1.EDB /Sd:\exchsrvr\mdbdata\DB1.STM /Te:\TEMPREPAIR.EDB
This command line will repair DB1.EDB located on C: along with its matching .STM file located on D: and will put the temporary file on the E: drive.
Eseutil /MS to do a "space dump" of the database, this will tell you how much your DB will shrink after, defrag so there is no surprise afterword.
Run Eseutil in /D (defragment) mode.
Run ISinteg in -fix -test alltests mode. ISinteg is the only repair utility that understands the Exchange database as an Exchange database
Eseutil looks at the database as just another ESE database, and sees it's contents as a bunch of tables and indexes. It doesn't know or care whether this table holds a mail folder or that table has attachments in it. It just fixes up the tables so they are valid ESE tables once again. Eseutil doesn't understand that this database holds folders and messages--it just has tables and records
ISinteg understands the relationships between those tables and records that turn them into folders and messages. If Eseutil had to delete a record that was a message, ISinteg knows how to decrement the count of messages for every folder that had a copy of that message. If you don't run ISinteg, clients will likely see strange things--like message counts that are off, messages that appears in the Inbox but can't be read, and so on.