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