Applies to: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007
Topic Last Modified: 2009-03-17

The Information Store Integrity Checker (Isinteg.exe) finds and eliminates errors from the public folder and mailbox databases at the application level. These errors can prevent the information store from starting or prevent users from logging on and from receiving, opening, or deleting mail. Isinteg is not intended for use as a part of routine information store maintenance. It is provided to assist in disaster recovery situations and other referential integrity issues.

Isinteg is most often used after the Eseutil repair operation. Eseutil repairs data at the page level of a database. Isinteg fixes data at the application level of the database. The application level is at a much higher layer than the page level.

You can use Isinteg to examine information that is related to mailboxes, folders, items, and attachments to determine whether problems exist among these components. Also, by using the -fix option, you can use Isinteg to fix these problems.

Note that the information that Isinteg examines at the application layer consists of pointers that point to a location in the database where the data resides.

Usage

When you run Isinteg at a command prompt, the following header information is displayed. This header information is displayed whether or not you specify an option in the Isinteg command line.

Microsoft (r) Exchange Server Information Store Integrity Checker Version <Version>

Copyright (c) Microsoft Corporation 1986-2000 Microsoft Corp. All Rights Reserved.

Isinteg supports the following options. These options appear when you run Isinteg together with the -? option.

Syntax:

isinteg -s ServerName [-fix] [-verbose] [-l logfilename] -test testname[[, testname]...]

-s ServerName

-fix check and fix (default - check only)

-verbose report verbosely

-l filename log file name (default - .\isinteg.pri/pub)

-t refdblocation (default - the location of the store)

-test testname...

folder message aclitem mailbox(pri only) delfld acllist

rcvfld(pri only) timedev rowcounts attach morefld ooflist(pri only)

global searchq dlvrto replstate(pub only)

peruser artidx(pub only) search newsfeed(pub only) dumpsterprops

Ref count tests: msgref smgsoftref attachref acllistref aclitemref

newsfeedref(pub only) fldrcv(pri only) fldsub dumpsterref

Groups tests: allfoldertests allacltests

isinteg -dump [-l logfilename] (verbose dump of store data)

Command-line options

To run Isinteg, type isinteg -s <ServerName> -test <options> where <options> represents one or more of the following command-line options.

Option Description

-?

This option displays the list of available options. This option does not run Isinteg.

-s ServerName

This option specifies the name of the server that hosts the database that you want to test.

-fix

This option tests and corrects errors in the information store that you specify. Therefore, it is best to use this option only when instructed to do so by a Microsoft Customer Support Services representative.

-verbose

This option causes Isinteg to generate detailed information during its operation.

-l filename

This option specifies the name of the log file. The log files have the following default paths:

  • For the private database: .\isinteg.pri

  • For the public database: .\isinteg.pub

-t refDBLocation

This option specifies the location of the temporary reference database that Isinteg creates when Isinteg runs. You can specify the location of this database on a different hard disk drive to improve performance during the Isinteg process.

-test TestName [[TestName]…]

This option specifies one or more tests to perform.

-dump [-l logfilename]

This option generates a verbose dump of information store data.

Isinteg tests

When you run Isinteg to test a database in Microsoft Exchange Server 2007, you must specify the server that hosts the database. For example, type isinteg -s <ServerName> -test allfoldertests.

Because of the intensive nature of the referential integrity checking operation, Isinteg may take a long time to run against a large information store. Therefore, instead of running the complete set of tests, we recommend that you run a particular series of tests as appropriate for the database issue that you experience. We recommend that you run the tests under the supervision of a Microsoft Customer Support Services representative.

Note:
If you have to run multiple tests, it is faster to combine the tests in a single Isinteg operation than it is to run multiple individual tests. For example, it is faster to run isinteg -s <ServerName> -test folder, message than it is to run isinteg -s <ServerName> -test folder followed by isinteg -s <ServerName> -test message.

The following table describes the database tests that are available.

Test Description Test length dependencies

aclitemref

Verifies reference counts for access control list items.

Number of folders in the information store and the number of members of each access control list.

acllist

Examines folders and validates access control lists.

Number of folders in the information store.

acllistref

Verifies the access control list reference counts.

The number of folders in the information store.

allacltests

Combines the acllist, acllistref, and aclitemref tests.

See description for each subtest.

allfoldertests

Combines the folder, fldsub, and search tests.

See description for each subtest.

artidx (public store only)

Tests the consistency of the Network News Transport Protocol (NNTP) article index.

Number of NNTP messages and folders.

attach

Validates properties for all attachments.

Number of attachments in the information store.

attachref

Validates attachment reference counts.

Number of messages and attachments in the information store.

deleteextracolumns

Deletes all cached indexes and some “extra” columns.

Number of folders in the information store.

delfld

Examines deleted folders, validates properties, and accumulates reference counts.

Number of deleted folders and the number of messages in each folder.

dumpsterref

Combines the msgref and msgsoftref tests. Additionally, it checks the item count of recoverable items and the size of the recoverable items available for Deleted Item Recovery.

See description for msgref and msgsoftref.

dumpsterprops

Runs the dumpsterref test and validates the presence of some required columns in the folder table.

See description for dumpsterref.

fldrcv (private store only)

Validates counts of special system folders, including Restrictions, Categorization, Inbox, Outbox, SentMail, Deleted Items, Finder, Views, Common Views, Schedule, and ShortCuts.

Number of mailboxes and folders in the information store.

fldsub

Validates the number of child folders. Also validates the number of recoverable child folders that are available for Deleted Item Recovery.

Number of folders in the information store.

folder

Examines folder tables and validates properties. Examines message tables, validates properties, and accumulates reference counts.

Number of folders and messages in the information store.

mailbox (private store only)

For each mailbox, examines folders, deleted folders, and tables. Also, validates properties and special folders (for example, Inbox, Outbox, Sent Items, Deleted Items, and other folders) that are in the folder table, and checks their sizes.

Number of mailboxes, folders, deleted folders, and messages in the information store.

message

Examines message tables and validates message table properties.

Number of messages in the information store.

morefld

Checks the search links (subset of the search test). In Fix mode, deletes all the cached categorization and restriction tables.

Total number of cached categorization and total restriction tables.

msgref

Validates message reference counts in the messages.

Number of folders, messages, and attachments in the information store.

msgsoftref

Validates message reference counts for messages marked for Deleted Item Recovery in the message table.

Number of folders and messages in the information store.

namedprop

Examines the folder, message, and attachment tables, and validates the named properties.

Number of folders, messages, and attachments in the information store.

newsfeed (public store only)

Validates newsfeed table properties, including permissions.

Number of folders in the information store.

newsfeedref (public store only)

Validates newsfeed reference counts.

Number of folders in the information store.

oofhist (private store only)

Validates out-of-office history information for all users.

Number of out-of-office rules set.

peruser

Validates per user read/unread information.

Number of users.

rcvfld (private store only)

Crosschecks receive folders with the folder table.

Number of receive folders in the information store.

replstate

Cleans up public folder replica lists that are out of sync and removes any unreferenced remote server rows from the replication state table.

Number of entries in the replication state table.

rowcounts

Validates the number of rows for all tables.

Number of folders, messages, and attachments in the information store.

search

Validates the search links.

Number of folders in the information store.

timedev

Counts the number of timed events (maintenance, periodic tasks, and so on).

Number of timed events.

Running Isinteg

When you run Isinteg, it checks whether the Microsoft Exchange Information Store service (MSExchangeIS) is started. If the Microsoft Exchange Information Store service is not started, you receive the following message, and Isinteg stops:

Error: unable to get databases status from server. The reason could be either wrong server name or networking problems. Isinteg quits now.

If the Microsoft Exchange Information Store service is started, and the target database is mounted, you receive the following message, and Isinteg stops:

Databases for server <ServerName>

Only databases marked as Offline can be checked

Index Status Database-Name

Storage Group Name: First Storage Group

1 Online Mailbox Database

Storage Group Name: Second Storage Group

2 Online Public Folder Database

Enter a number to select a database or press Return to exit.

If Isinteg is running together with the -fix option, database counts are updated to the true values as determined by Isinteg. The "named to ID or named properties" cleanup is another check that is performed. This check removes unused named properties.

The following tables are examined by Isinteg:

  • ACL List

  • ACL Member

  • Attachment

  • Cross Reference

  • Deleted Folders

  • Deleted Recipients

  • DeliveredTo

  • Folder

  • Global

  • Mailbox

  • Message

  • Miscellaneous

  • Oof History

  • Per-User Read

  • PropsIn Contents

  • ReplidMap

  • Special Folders

  • Timed Events

Isinteg validates the referential integrity of an information store database by scanning the database and examining all the references. During this process, Isinteg creates a temporary database to store the reference counts. At the end of the examination process, Isinteg compares the reference counts that have been collected in the temporary database to those in the information store database. If errors exist and if you specified the -fix option, Isinteg makes corrections to the information store database.

By default, Isinteg creates the temporary database in the same folder as the information store database that you test. You can specify a different location for the temporary database. When the Isinteg operation is finished, Isinteg removes the temporary database whether the database is in the local information store folder or in a different location.

When you run Isinteg in Test mode, Isinteg must be run separately against the public information store and the private information store.

By default, Isinteg errors are displayed in the Command Prompt window and saved in a log file. We recommend that you save the log file or files that Isinteg creates. This is so that a Microsoft Customer Support Services representative may examine the log files if you require help to resolve an issue that you experience.

The -fix option instructs Isinteg to repair any errors that it finds. Isinteg records the details of all repairs in a log file. If you do not specify a log file name in the Isinteg command, Isinteg creates a log file that is named Isinteg.pri or Isinteg.pub, depending on whether you ran Isinteg against the private information store or the public information store.

Note:
We recommend that you only run the -fix option under the supervision of a Microsoft Customer Support Services representative.

Usage Scenarios

Generally, if you experience an issue with an Exchange information store, the information store is no longer mounted, and Exchange generates entries in the Application log. You can use this information to help determine which Isinteg test or tests to run to troubleshoot or to fix referential integrity problems in the database.

The following table describes various event IDs and messages together with specific Isinteg options that you can use to try to address a particular issue.

Important:
Although the events that appear in this table may be caused by a damaged information store, this is not always the case. Instead, the events could be generated because of a different issue, such as a problem in the Exchange code or in a third-party program that is integrated with Exchange. Therefore, if the particular Isinteg operation does not resolve the issue, you may want to contact Microsoft Customer Support Services to help with additional troubleshooting.

Event ID Description Isinteg option

1025

An error occurred. Function name or description of problem: EcGetRestriction. Error: 0x57a

-test search

1186

A database inconsistency (EcSetSpecialRights/ACLID) was encountered while performing an upgrade.

-test acllistref

1186

A database inconsistency (2.1A/AMIDRefCt) was encountered while performing an upgrade.

A database inconsistency (2.1A/AMIDRef) was encountered while performing an upgrade.

A database inconsistency (2.1B/AMID) was encountered while performing an upgrade.

A database inconsistency (2.2D/AMID) was encountered while performing an upgrade.

-test aclitemref

1186

A database inconsistency (2.1A/ACLID) was encountered while performing an upgrade.

A database inconsistency (2.1B/ACLID) was encountered while performing an upgrade.

A database inconsistency (2.2D/ACLID) was encountered while performing an upgrade.

A database inconsistency (2.1A/ACLRef) was encountered while performing an upgrade.

-test acllistref

1186

A database inconsistency (2.1B/cnset) was encountered while performing an upgrade.

-test aclitemref

1198

A database inconsistency was encountered while performing an upgrade to version 2.19.

FID: <value>

MID: <value>

INID: <value>

A database inconsistency was encountered while performing an upgrade to version 2.2a.

FID: <value>

MID: <value>

INID: <value>

-test folder

7200

Background thread FDsWaitTask halted due to error code <value>.

-test mailbox

7200

Background thread EcFlushInTransitUserMail halted due to error code <value>.

-test folder

7201

Background thread FDoMaintenance encountered a problem. Error code <value>.

-test folder,artidx

7201

Background thread FDoPeriodic encountered a problem. Error code <value>.

-test rowcounts, dumpsterref

8500

Unable to move mailbox <mailbox name>.

A problem occurred while opening an attachment.

Internal parent folder ID: <value>, parent message ID: <value>; Error code: <value>.

-test message

8501

Unable to move mailbox <mailbox name>.

A problem occurred while opening an attachment.

Parent folder name: <name>, parent message subject: <subject>; Error code: <value>.

-test message

8502

Unable to move mailbox <mailbox name>.

A problem occurred while opening an attached message.

Internal parent folder ID: <value>, parent message ID: <value>; Error code: <value>.

-test message

8503

Unable to move mailbox <mailbox name>.

A problem occurred while opening an attached message.

Parent folder name: <value>, parent message subject: <value>; Error code: <value>.

-test message*

8504

Unable to move mailbox <mailbox name>.

A problem occurred while getting the properties for a folder.

Internal folder ID: <value>; Error code: <value>.

-test folder*

8505

Unable to move mailbox <mailbox name>.

A problem occurred while getting the properties for a folder.

Folder name: <value>; Error code: <value>.

-test folder*

8506

Unable to move mailbox <mailbox name>.

A problem occurred while getting the properties for a message.

Internal parent folder ID: <value>; Message ID: <value>; Error code: <value>.

-test folder,message*

8507

Unable to move mailbox <mailbox name>.

A problem occurred while getting the properties for a message.

Parent folder name: <value>; Message subject: <value> Error code: <value>.

-test folder,message*

8508

Unable to move mailbox <mailbox name>.

A problem occurred while getting the properties for an attachment.

Internal parent folder ID: <value>, parent message ID: <value>; Error code: <value>.

-test attach

8509

Unable to move mailbox <mailbox name>.

A problem occurred while getting the properties for an attachment.

Parent folder name: <value>, parent message subject: <value>; Error code: <value>.

-test attach

* The issue that causes this message to appear may not be related to the integrity of the information store.

For More Information

For more information about other tools that are available to help with disaster recovery for Microsoft Exchange Server 2007, see Disaster Recovery Tools and Wizards.

For more information about the Isinteg program, see Microsoft Knowledge Base article 301460, Exchange Command-Line Parameters for the Isinteg.exe Tool.