Tuesday, March 1, 2005

Using command-line server utilities in Exchange


By Troy Werelius

Microsoft includes two command-line utilities with Exchange Server that are designed to accomplish various maintenance functions within the Exchange database. They're limited, complex, tedious, and time consuming when compared to the functionality contained within GOexchange. The best time to learn how to use these tools is in a lab environment before you need them.

Like firearms and prescription medications, these utilities can be dangerous if you don't understand how they work and when to use them. Imagine shooting a shotgun at a container full of water--a rather graphic demonstration of what can happen when you mishandle a powerful tool. Meet ESEutil and Isinteg, the command-line utilities included with Exchange Server.

ESEutil checks and fixes individual database tables, and ISinteg checks and fixes the links between tables. To better understand the difference between ESEutil and ISinteg, let's use a building construction analogy.

Running ESEutil is like having a structural engineer check your house's foundation. The engineer doesn't care what's inside the house. The engineer only cares whether the underlying structure is sound.

Whereas running ISinteg is like having an interior decorator come inside your house to check the way you've laid out your furnishings. The decorator doesn't care about the house's foundation. The decorator only cares whether the rooms' layout and decor meet with their approval.

As you can see from the analogy above, both ESEutil and ISinteg are vastly different utilities, but they're complimentary, and in some ways dependent upon each other to provide proper Exchange maintenance. In the next section, we'll provide a more in-depth description of these two Microsoft Exchange utilities.

About ESEutil

ESEutil checks and fixes individual database tables, but doesn't check the mail data contained in the ESE (Extensible Storage Engine) database. Object-oriented databases like Microsoft Exchange consist of big, structured, sequential files connected by a set of indexes. The underlying database technology that controls these files is called Indexed Sequential Access Method, or ISAM. The ESE database engine exposes the flat ISAM structure as a hierarchy of objects.

The function of ESEutil is to examine these individually indexed object pages, check them for correctness by comparing a computed checksum against a checksum stored in the page header, and verify that each page's data is consistent. ESEutil isn't for casual use, so don't use ESEutil unless you absolutely need to run it and you understand what it does. To understand ESEutil, you need to know about the format of the ESE database in which ESEutil works, and you need to be familiar with ESEutil's many modes of operation.