Applies to: Exchange Server 2010 SP3, Exchange Server 2010 SP2
Topic Last Modified: 2011-03-19
Exchange Search indexes mailboxes and supported attachments in Exchange mailboxes. With increasing volumes of e-mail, increasing mailbox sizes and storage quotas, provisioning of personal archive mailboxes for users, and the introduction of Multi-Mailbox Search for performing discovery searches, Exchange Search is a critical component of the Mailbox servers in your Microsoft Exchange Server 2010 organization. Issues with Exchange Search can affect user productivity and impact Multi-Mailbox Search functionality.
To learn more about Exchange Search, see Understanding Exchange Search.
Looking for management tasks related to managing Exchange Search? See Managing Exchange Search.
Using the Test-ExchangeSearch Cmdlet
Step 5 of the procedure in this topic describes running the Test-ExchangeSearch cmdlet to help diagnose Exchange Search issues. You can use the Test-ExchangeSearch cmdlet to test Exchange Search functionality for a Mailbox server, a mailbox database, or a specific mailbox. The cmdlet delivers a test message to the specified mailbox (or to a database's system mailbox if a mailbox isn't specified), and then performs a search to determine whether the message is indexed, including the time taken to index it. Under normal conditions, Exchange Search indexes a message within about 10 seconds of the message being created or delivered to a mailbox. The test message is automatically deleted after the test.
Exchange 2010 includes the following enhancements to the Test-ExchangeSearch cmdlet:
- The Mailbox parameter has been added to the standard
output.
- When you specify a server name, the cmdlet simultaneously tests
all mailbox databases on the Mailbox server. For databases that are
replicated to other Mailbox servers in a database availability
group (DAG), if you run the command on a Mailbox server that
doesn't contain the active database copy, the test is automatically
performed against the server that contains the active database
copy.
- When you use the cmdlet with the MonitoringContext
parameter, it provides additional data that can be used by
monitoring software such as Microsoft System Center Operations
Manager 2007.
- When you use the cmdlet with the Verbose switch, the
cmdlet returns detailed results and status for every step, and
additional diagnostic information to help you troubleshoot issues
related to search.
For detailed syntax and parameter information, see Test-ExchangeSearch.
Retrieving Unsearchable Items
You can use the Get-FailedContentIndexDocuments cmdlet to retrieve a list of unsearchable mailbox items that couldn't be successfully indexed by Exchange Search. You can run the cmdlet against a Mailbox server, a mailbox database, or a specific mailbox. The cmdlet returns details about each item that couldn't be searched. There are several reasons why a mailbox item can't be searched; for example, an e-mail message includes an attachment file type for which a search filter isn't installed. If a search filter for that file type is available, you can install it on your Exchange servers.
Important: |
---|
Search filters provided by Microsoft are tested and supported by Microsoft. We recommend that you test any third-party search filters in a test environment before installing them on Exchange servers in a production environment. |
Note: |
---|
Messages that contain an attachment file format that's listed on the safe list aren't returned in the list of unsearchable items. For more details, see "Exchange Search and Attachments" in Understanding Exchange Search. |
For detailed syntax and parameter information, see Get-FailedContentIndexDocuments.
Diagnose Exchange Search Issues
You need to be assigned permissions before you can perform this procedure. To see what permissions you need, see the "Exchange Search" entry in the Mailbox Permissions topic.
- Check service state Is the Microsoft
Exchange Search Indexer (MSExchangeSearch) service started on the
Mailbox server? If yes, go to Step 2. If no, use the Services
MMC snap-in to verify that the MSExchangeSearch service is running
as follows:
- Click Start, point to Administrative Tools, and
then click Services.
- In Services, verify that the Status for the
Microsoft Exchange Search Indexer service is listed as
Started.
- Click Start, point to Administrative Tools, and
then click Services.
- Check mailbox database configuration Is
the IndexEnabled parameter set to true for the user's
mailbox database? If yes, go to Step 3. If no, run the
following command in the Shell to verify that the
IndexEnabled flag is set to true.
Copy Code Get-MailboxDatabase | Format-Table Name,IndexEnabled
- Check mailbox database crawl state Has
the Exchange database been crawled? If yes, go to Step 4. If
no, use Reliability and Performance Monitor to check the Full
Crawl Mode Status counter of the MSExchange Search
Indices performance object. Perform the following steps:
- Open Reliability and Performance Monitor (perfmon.exe).
- In the console tree, under Monitoring Tools, click
Performance Monitor.
- In the Performance Monitor pane, click Add (green plus
sign).
- In Add Counters, in the Select counters from
computer list, select the server on which the mailbox database
you want to monitor is located.
- In the unlabeled box below the Select counters from
computer list, select the MSExchange Search Indices
performance object.
- In the Instances of selected object box, select the
instance for the user's mailbox database.
- Click Add, and then click OK.
To view other relevant search counters, use the preceding Steps a though g to add the following performance objects:
- MSExchange Search Indexer
- MSFTESQL-Exchange:Catalogs
- MSFTESQL-Exchange:FD
- MSFTESQL-Exchange:Indexer
- MSFTESQL-Exchange:Service
- Open Reliability and Performance Monitor (perfmon.exe).
- Check the database copy indexing
health Is the content index healthy? Use the
Get-MailboxDatabaseCopyStatus cmdlet to check the content
indexing health for a database copy.
Copy Code Get-MailboxDatabaseCopyStatus | Format-Table Identity,ActiveDatabaseCopy,ContentIndexState -Auto
- Run the Test-ExchangeSearch cmdlet If
the mailbox database has already been crawled, you can run the
Test-ExchangeSearch cmdlet for the mailbox database or for a
specific mailbox.
Copy Code Test-ExchangeSearch -Identity AlanBrewer@contoso.com
- Check the Application event log Using
Event Viewer or the Shell, check the Application event log for
search-related error messages. Check the Source:
MSExchangeSearch Indexer and msftesql-Exchange events.
For more information, follow the link in the event log entry.
- Restart the Microsoft Exchange Search Indexer
service Use the Services MMC snap-in or the
Shell to stop and then restart the Microsoft Exchange Search
Indexer (MSExchangeSearch) service:
- Click Start, point to Administrative Tools, and
then click Services.
- In Services, right-click Microsoft Exchange Search
Indexer, and then click Stop. After the service is
stopped, right-click the service again, and then click
Start.
- Click Start, point to Administrative Tools, and
then click Services.
- Reseed the search catalog In some
cases, such as when the search catalog is corrupted, you may need
to reseed the catalog. When a search catalog needs to be reseeded,
Exchange Search notifies you by logging entries in the Application
event log. For more information about reseeding the Search catalog,
see Reseed the
Search Catalog.