Microsoft(r) Exchange Server Utilities - ESEutil & ISinteg

Microsoft includes two command line utilities withcompletely different utility function, and the results
Exchange Server that are designed to accomplishto an Exchange database can be disastrous.
various maintenance functions within the ExchangeBelow are a few of the many different available
database. They are limited, complex, tedious, andmodes and options for ESEutil, each of which can
time consuming when compared to thehave very different results on a database. NOTE:
functionality contained within GOexchange. TheFor brevity we have not included entire command
best time to learn how to use these tools is in astatements.
lab environment before you need them. Like- "ESEutil /d" will defragment the designated
firearms and prescription medications, these toolsdatabase and is a fairly straight forward mode of
can be dangerous if you don't understand howoperation that is commonly used.
they work and when to use them. ImagineRunning a manual offline defragmentation is only
shooting a shotgun at a container full of water-apart of the process that should be completed in
graphic demonstration of what can happen whenorder to keep the databases healthy. Many
you mishandle a powerful tool. These two utilitiesadministrators run ESEutil on a database to
are named ESEutil and ISinteg.remove deleted items and regain white space
ESEutil checks and fixes individual database tablesthen, mistakenly assume that by doing so, the
and ISinteg checks and fixes the links betweenprocess is complete. Performing this task,
tables.however, doesn't check or address issues that
To better understand the difference betweenmay exist within the mail data itself, and it won't
ESEutil and ISinteg, let's use a building constructionfix the links between the tables of an ESE
analogy.database. The database now contains a higher
- Running ESEutil is like having a structural engineerpercentage of errors, warnings, and minor
check your house's foundation. The engineerinconsistencies than it did prior to defragmentation.
doesn't care what's inside the house. The engineerNOTE: Running ESEutil repeatedly without
cares only whether the underlying structure isimplementing a complete offline maintenance
sound.process is certain recipe for disaster.
- Running ISinteg is like having an interior- "ESEutil /d /p" will have a slightly different result.
decorator come inside your house to check theThe "/d" tells ESEutil to defragment the
way you've laid out your furnishings. Thedesignated database. The "/p" option used with
decorator doesn't care about the house'sthe "/d" instructs ESEutil to leave the newly
foundation. The decorator cares only whether thecreated defragmented database in the temporary
rooms' layout and decor meet with their approval.work area and not to overwrite the original
As you can see from the analogy above, bothdatabase.
ESEutil and ISinteg are vastly different utilities, but- Now slightly modify the command to "ESEutil /p"
they are complimentary and in some waysand the actions taken on the designated database
dependent upon each other to provide properare extremely different. The "/p" evokes the
Exchange maintenance. In the next section, weExchange "Repair" mode. At first glance this
will provide a more in-depth description of thesesounds like a great thing to do, and it couldn't hurt
two Microsoft Exchange utilities.to try because repairing the database should be
About ESEutilbeneficial right? Wrong!
ESEutil checks and fixes individual database tablesThis command actually invokes a "Hard Repair"
but does not check the mail data contained in themode of ESEutil. This means that ESEutil will
Extensible Storage Engine (ESE) database.attempt to repair corrupt pages, but it makes no
Object-oriented databases like Microsoft Exchangeattempt to put the database in a consistent state.
consist of big, structured sequential filesIf it finds problems that cannot be corrected, then
connected by a set of indexes. The underlyingthose pages will be discarded. Each page contains
database technology that controls these files isdata therefore each discarded page represents
called Indexed Sequential Access Method, ordata loss. Discarding certain pages of the
ISAM. The ESE database engine exposes the flatdatabase can actually render it useless. In other
ISAM structure as a hierarchy of objects.words, wave goodbye to your data.
The function of ESEutil is to examine theseSometimes, using the repair mode is the only
individually indexed object pages, check them forway to fix a database. In the vast majority of
correctness by comparing a computed checksumsituations, however, it should be avoided except
against a checksum stored in the page header,as a last resort and there are specific steps that
and verify that each page's data is consistent.should be taken pre and post use of "Repair /p"
ESEutil isn't for casual use. So, don't use ESEutilmode.
unless you absolutely need to run it and youAbout ISinteg
understand what it does. To understand ESEutil,The purpose of the Microsoft ISinteg utility is to
you need to know about the format of the ESEinspect and fix weaknesses within the information
database in which ESEutil works and you need tostore (IS). ISinteg looks at the mailboxes, public
be familiar with ESEutil's many modes offolders, and other parts of the IS, checking for
operation.anything that appears to be out of place. ISinteg
ESEutil is a useful tool because it can operate inscans the tables and B-trees that organize the
many modes. Each mode, however performsESE pages into their logical structures. In addition,
different functions with limitations or caveats.the tool looks for orphaned objects, or objects
- Defragmentation: ESEutil /d [options]that have incorrect values or references.
- Recovery: ESEutil /r [options]Because ISinteg focuses on the logical level rather
- Integrity: ESEutil /gthan physical database structure, it can repair and
- Repair: ESEutil /p [options]recover data that ESEutil can't. When looking at
- Checksum: ESEutil /k [options]the physical database level, ESEutil might find the
The way that each of these functions isdata to be valid because it looks for things such
executed within the utility is to use a crypticas page integrity and B-Tree structure. Data that
MS-DOS-like command structure as theappears valid to ESEutil from a physical view of
parameter qualifier. For example, in order to runthe database might not be valid from a logical
the defragmenter portion of the utility, anview. For example, data for various IS tables like
administrator would run "ESEutil /d [options]" andthe message, folder, or attachments table may
so on. For additional information on ESEutil, pleasebe intact, but the relationships among tables or
refer to the GOexchange FAQ on our website -records within tables may be broken or incorrect
Microsoft ESEutil:because of corruption in the logical structure. This
We are not going to attempt to cover all thecorruption can render the database unusable.
potential pitfalls with ESEutil, however, here are aLogical corruption of your Exchange Server
few major issues regarding ESEutil to keep indatabases is problematic and much more difficult
mind:to diagnose and repair than physical corruption.
- There are times when it is appropriate to useThe user and administrator are, typically, unaware
ESEutil on its own, however, a completeof a logical corruption occurrence. No specific
maintenance process includes the combined usesymptoms identify logical corruption. Often, when
of specific ESEutil and ISinteg commands, as wellan administrator discovers the logical corruption,
as other steps that must be undertaken.it's too late for any repairs to take place.
- ESEutil is very powerful tool and, if theYou can run ISinteg one of two ways:
commands are entered improperly or in an- Default mode, in which the tool runs the tests
incorrect order, the results can be catastrophic.you specify and reports its findings.
- The ESEutil command structure can be very- Fix mode, where you specify optional switches
confusing and, at times, misleading. Changing oneinstructing ISinteg to run the specified tests and
letter in the command structure executes aattempt to fix whatever it can.