2009-02-17 2 views
3

У меня есть таблица, которая отлично работает в полнотекстовом поиске до последней недели. Есть более семи миллионов записей, и я вижу, что он содержит более семи миллионов записей в полнотекстовом индексе.полнотекстовый индекс не обновляется (SQL 2005)

Но в результатах поиска ничего больше, чем за неделю. Я вижу в полнотекстовом индексе свойств таблицы, что число «ожидающих» записей растет (возможно, 30 тысяч) сегодня, вероятно, соответствует тому, что он не добавил к индексу.

Первое, что я проверил, был ли включен этот индекс. Это не так, поэтому я включил его, и процесс, который начал работу «ALTER FULLTEXT INDEX», начал блокировать все остальные запросы на сервере, поэтому я его убил.

Я подтвердил, что служба полнотекстового индексирования запущена и запускается автоматически. Я также подтвердил, что он автоматически проверяет изменения, хотя поворот от «Автоматического» до «Ручного» в «Выкл.», Похоже, не делает ничего, кроме сброса количества поставленных в очередь результатов. (Возврат к «Автоматическому» сбрасывает число до 30 000.)

Я попытался перестроить полнотекстовый индекс, но для «Полный» и «Инкрементный» он отбрасывает сообщение о «уже индекс". «Обновление» говорит, что «команда выполнена успешно», но, похоже, не имеет никакого эффекта.

Последнее, что я сделал сегодня было:

  1. отключить полнотекстовый индекс
  2. перестраивать кластерный индекс, ИУП основан на
  3. повторного включения ИУП

Это началось с задания «ALTER FULLTEXT INDEX», которое снова заблокировало все процессы, которые выполняли фактическую работу.

Мы пытаемся решить между вариантом A: вытирать существующую FTI и перестраивать с нуля, а вариант B: сделать трюк disable/rebuild/re-enable, который, кажется, начинает что-то полезное. (Мы бы сделали B тогда A, но мы ожидаем час или два простоя для обоих, и A работал в прошлом.)

Есть ли более быстрый способ сделать это? И любая идея, как я попал в эту ситуацию в первую очередь?

ответ

2

Это интересная проблема. Вы попали в это, я думаю, потому что он был отключен. Возможно, я нашел способ избавить вас от этого, не блокируя все остальное.

Во-первых, знайте, что это поведение является ошибкой в ​​SQL Server 2005 с пакетом обновления 1 (SP1), убедитесь, что у вас есть пакет обновления 1 (SP1).

Если вы уже делаете, попробуйте:

ALTER FULLTEXT INDEX ON имя_таблицы SET CHANGE_TRACKING РУКОВОДСТВА

ALTER FULLTEXT INDEX ON имя_таблицы START UPDATE НАСЕЛЕНИЮ

Если это сработает, то я думаю, что вы столкнулись та же проблема, что и this парень. Он просто задал задание на работу каждый час или около того. Конечно, это временное решение, но оно даст вам время, пока вы не сможете действительно перестроить индекс.

Что-то еще, что только пришло на ум, вы пробовали РЕОРГАНИЗИРОВАТЬ индекс?Я знаю, что он не блокируется, но я не уверен, что это приведет к тому, что флеш произойдет таким образом, чтобы он не блокировался.

+0

Если бы у меня был SP1, я бы не видел поведение индекса-вдруг-отключает себя? Это будет интересно для группы здесь. Благодарю. (Мы не на SP1.) – dnord

+0

На странице, на которой я ссылался, упоминалось, что проблема «навсегда ожидающая» является ошибкой в ​​пред-SP1. Не обязательно, что это как-то стало отключенным (это может быть отдельный вопрос). – colithium

0

Чтобы уточнить, что вы проверили, что раздел, в котором создается индекс, имеет место. Мы столкнулись с этой проблемой в нашей среде DEV, где полный текстовый индекс не обновлялся.