26 ноября 2009 г.

Как восстановить Windows Search Service

Наверняка все сталкивались с Windows Search Service он же Windows Desktop Search (WDS). Те, кто не сталкивался – просто не знают, что он у них стоит :-)

Можно долго рассуждать про альтернативные системы персонального поиска, но, например, MS Outlook использует именно его, а если у вас Exchange – то без него вообще не обойтись. Когда внедрялся комплект из Exchange 2007 на сервере и Windows XP + Office 2007 на клиенте, то текущей версией WSD была 3-я версия. При этом, мы переносили папку индекса из Documents and Settings в другое место. Как показала практика, WDS 3 не очень хорошо относится к такому тюнингу :-) Особенно если кто-то потом почистит папку от фалов.

После этого, Microsoft был выпущена следующая версия WDS 4.0, которой с помощью WSUS была заменена версия 3. К сожалению, не у всех эта операция прошла гладко, да и вообще, время от времени, у кого-нибудь из наших многочисленных пользователей возникали проблемы.

Проблемы обычно следующие:

  1. Поиск работает, но плохо. Т.е. результаты выводятся, но они неполные.
  2. Поиск вообще не работает.
  3. Outlook работает очень медленно

В общем случае, они лечатся достаточно просто. В WDS идем в меню  Windows Search Options –> Advanced там Restore Defaults, если был изменен путь и Rebuild, если путь не менялся. После этого перезагрузка, после которой выполняется переиндексация и все в порядке.

Кроме того, в процессе решения проблем иногда выясняется, что WDS не обновился и имеет по-прежнему 3-ю версию, или самый тяжелый случай – сам сервис уже не запускается с ошибкой “service specific error”

Все это, сопровождается следующими ошибками в Event Log

Type:    Warning
Source:    Windows Search Service
Event ID:    1008
Event Time:    25.11.2009 18:26:11
User:    n/a
Computer:    BG-ADMIN08
Description:
The Windows Search Service is attempting to remove the old catalog.

Type:    Error
Source:    Windows Search Service
Event ID:    1006
Event Time:    25.11.2009 18:26:11
User:    n/a
Computer:    BG-ADMIN08
Description:
The Windows Search Service has failed to create the SystemIndex search index. Internal error <1, 0x80070003, (null)>.

Type:    Error
Source:    Service Control Manager
Event ID:    7024
Event Time:    25.11.2009 16:10:21
User:    n/a
Computer:    BG-ADMIN08
Description:
The Windows Search service terminated with service-specific error 2147749155 (0x80040D23).

Итак, что следует сделать:

  1. Запускаю regedit и иду в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Search.
    Там выставляю для ключа SetupCompletedSuccessfully значение 0. Если вдруг там этого ключа не окажется, то создаю его с типом REG_DWORD
  2. Там же, в ключах DataDirectory и DefaultColumnFile смотрю пути, где служба будет искать свои файлы.
  3. Если пути отличные от пути по умолчанию, т.е. (C:\Documents and Settings\All Users\Application Data\Microsoft\Search\Data\), то открываю и его, а при его отсутствии создаю все необходимые папки.
  4. Теперь проверяю, чтобы в папке Data (или в папках Data, если путь не по умолчанию) проверяю наличие папок Applications, Temp и Config. Если какой-нибудь нету – создаю, не забыв дать на них полные права системе.
  5. Теперь самое интересное, в папке Config должны лежать два файла gathrprm.txt и schema.txt. Если их нету, то беру с компьютера, на котором все работает. В моем случае подошли даже от версии 4.х.
  6. Перезагружаю компьютер и сервис должен уже стартует.
  7. Теперь обновляю WDS до версии 4. Чтобы это получилось вначале удаляю WDS 3 через ADD/Remove Programs. Теоретически, при установке WDS4 он сам удаляет старый, но у меня, он долго думал, после чего сообщил, что сделать этого он не может :-)
  8. После удаления старого WDS, перезагружаю компьютер, качаю WDS4 и устанавливаю его.
  9. Перезагружаю компьютер, меняю путь для данных на путь по умолчанию или, если он уже такой делаю переиндексацию.
  10. Последняя перезагрузка и все в порядке!

Комментариев нет:

Отправить комментарий