Полнотекстовый индекс требует удаления и воссоздания - почему? - PullRequest
7 голосов
/ 20 мая 2010

Итак, у меня запущено веб-приложение на .net 3.5, подключенное к блоку SQL 2005.

Мы делаем запланированные релизы каждые 2 недели.

Около 14 таблиц из 250 проиндексированы в полнотекстовом формате.

Не после каждого выпуска, но слишком много, индексы выходят из строя. Кажется, у них там есть данные, но когда мы пытаемся найти их из внешнего интерфейса или SQL-предприятия, мы получаем таймауты / зависания.

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

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

Мой вопрос: почему мы должны это делать? что мы можем сделать, чтобы отсортировать индекс?

Вот немного сценария,

IF  EXISTS (SELECT * FROM sys.fulltext_indexes fti WHERE fti.object_id = OBJECT_ID(N'[dbo].[Address]'))
ALTER FULLTEXT INDEX ON [dbo].[Address] DISABLE
GO
IF  EXISTS (SELECT * FROM sys.fulltext_indexes fti WHERE fti.object_id = OBJECT_ID(N'[dbo].[Address]'))
DROP FULLTEXT INDEX ON [dbo].[Address]

GO



IF  EXISTS (SELECT * FROM sysfulltextcatalogs ftc WHERE ftc.name = N'DbName.FullTextCatalog')
DROP FULLTEXT CATALOG [DbName.FullTextCatalog]
GO




        -- may need this line if we get an error
        BACKUP LOG SMS2 WITH TRUNCATE_ONLY

        CREATE FULLTEXT CATALOG [DbName.FullTextCatalog] ON FILEGROUP [FullTextCatalogs]
        IN PATH N'F:\Data'
        AS DEFAULT
        AUTHORIZATION [dbo]



CREATE FULLTEXT INDEX ON [Address](CommonPlace  LANGUAGE 'ENGLISH')
     KEY INDEX PK_Address
          ON [DbName.FullTextCatalog]
     WITH 
          CHANGE_TRACKING AUTO 
go

1 Ответ

2 голосов
/ 28 декабря 2014

В этой статье MSDN о сбоях полнотекстового индексирования в SQL Server 2005 перечислены 6 возможных причин. Я суммирую здесь - подробности см. В полной статье.

  • Индексатору не удается найти или загрузить фильтр или компонент средства разбиения по словам.
  • Компонент, такой как средство разбиения слов или фильтр, дает сбой и возвращает индексатору ошибку.
  • Полнотекстовый индекс превышает ограничение на количество строк, которые могут содержаться в полнотекстовом каталоге.
  • Кластерный индекс или индекс полнотекстового ключа в индексируемой таблице изменяются, удаляются или перестраиваются.
  • Сбой оборудования или повреждение диска приводит к повреждению полнотекстового каталога.
  • Файловая группа, содержащая таблицу, индексируемую в полнотекстовом режиме, отключается или становится доступной только для чтения.

Вывод статьи:

Журнал сканирования следует просматривать в конце любой существенной операции заполнения полнотекстового индекса или когда вы обнаружите, что заполнение не завершено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...