Ошибки поиска в OWA и Outlook после установки Exchange 2010 Service Pack 1

После установки Exchange 2010 Service Pack 1 вы можете обнаружить, что поиск в Outlook Web App (OWA) приводит к получению ошибки: “The action couldn’t be completed.  Try again later.” Кроме того, клиенты Outlook работающие в онлайновом режиме (online mode) не могут больше выполнять поиск во вложениях или во вложенных письмах. 

Во время проявления проблемы вы можете увидеть следующие сообщения в журнале приложений (application log):

Log Name: Application
Source: MSExchangeIS Mailbox Store
Event ID: 9877
Task Category: Content Indexing
Level: Error
Description:
Content Indexing function 'CISearch::EcGetRowsetAndAccessor' received an unusual and unexpected error code from MSSearch. Mailbox Database: <Database Name> Error Code: 0x80043629

Log Name: Application
Source: MSExchangeIS Mailbox Store
Event ID: 9842
Task Category: Content Indexing
Level: Error
Description:
Function CISearch::EcGetRowsetAndAccessor detected that content indexing was disabled for database '<Database Name>' because of error '0x80041820' from MSSearch.

Когда вы проверяете папку CatalogData в той же папке, где находится почтовая база, вы можете увидеть, что файлы индексации контента (файлы .CI) не растут. Если вы выполняете ResetSearchIndex.ps1 над этим индексом, вы можете видеть, что общий размер папки CatalogData увеличивается только на несколько килобайт или мегабайт, либо что файлы.CI вообще не создаются или создаются, но только размером только в несколько килобайт каждый.

В чем причина этой проблемы?

Эта проблема – обычно результат установки или обновления многоролевого сервера (сервер с установленными ролями MB, CAS, HT) до SP1 и последующим удалением ролей транспортного сервера-маршрутизатора (Hub Transport) и клиентского доступа (Client Access), в результате чего на сервере остается только роль сервера почтовых ящиков. 

В реестре существует ссылка для каждого языка,  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex\Language. Эта ссылка (ActiveX CLSID используемого класса) позволяет выполнять выделение слов и морфологический анализ для соответствующего языка.

Во время удаления Exchange 2010 Service Pack 1 для роли Hub Transport программа установки удаляет эти ссылки в реестре, несмотря на то, что роль сервера почтовых ящиков все еще присутствует.  Удаление этих ссылок приводит к ошибкам  генерации индексных файлов.

Как исправить эту проблему?

Вам нужно выполнить скрипт на серверах почтовых ящиков, где возникла эта проблема, для того чтобы восстановить ссылки:

  1. Загрузите скрипт в Центре загрузок Repair-ExchangeSearchSymlinks.ps1
  2. Скопируйте скрипт Repair-ExchangeSearchSymlinks.ps1 в каталог Scripts на сервере почтовых ящиков (по умолчанию C:\Program Files\Microsoft\Exchange Server\v14\Scripts).
  3. На сервере почтовых ящиков найдите ссылку на Exchange Management Shell и запусти его с повышенными правами: щелкните на ней правой кнопкой мышки и выберите “Run as Administrator” .
  4. В Exchange Management Shell перейдите в каталог Exchange Scripts.
  5. Затем выполните скрипт:
    .\Repair-ExchangeSearchSymlinks.ps1
  6. Затем выполните следующий скрипт, указав имя почтовой базы (или баз), индекс которой выходите перестроить:
    .\ResetSearchIndex.ps1 [-force] <dbname> [<dbname>]...
  7. Вы получите сообщение Event ID 109 для каждой почтовой базы, когда процесс перестроения индекса начнется и сообщение Event ID 110 для каждой почтовой базы, когда процесс перестроения индекса завершится.
  8. После появления Event ID 110 для каждой почтовой базы проверьте, что поиск работает правильно в и в OWA, и в онлайновом режиме Outlook.

Боб Вонт

Перевод: Илья Сазонов, MVP