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:
|
-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.