Таким образом, у меня есть работа веб-приложения .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