Отрубить все соединения, мешающие rebuld fulltext index

Iukpshl
Дата: 11.02.2010 22:28:44
Добрый день!
Есть база (довольно посещаемого web-сайта), к которой постоянно идут тяжелые запросы с поиском по полнотекстовому индексу (индекс построен только на одной таблице).
Иногда (очень редко, в экстренных ситуациях, но все же) требуется перестроить (rebuild) полнотекстовый индекс, выполняю такой запрос:
use my_DB
go
ALTER FULLTEXT CATALOG my_CATALOG rebuild
go
ALTER FULLTEXT INDEX ON my_TABLE start FULL POPULATION
go
При большом объеме поисковых запросов данный запрос ждет их окончания, что может занять очень продолжительное время (вплоть до таймаута).
Вопрос: как отрубить все соединения перед перестроением полнотекстового индекса?
Подозреваю, что перевод БД в single-mode поможет (впрочем, как и отключение web-сайта), есть ли какие-нибудь менее радикальные способы (типа - насильно экслюзивно заблокировать таблицу с полнотекстовым индексом, отрубив при этом все текущие блокировки)?
tpg
Дата: 12.02.2010 06:33:47
Iukpshl
При большом объеме поисковых запросов данный запрос ждет их окончания, что может занять очень продолжительное время (вплоть до таймаута).
Вопрос: как отрубить все соединения перед перестроением полнотекстового индекса?
Подозреваю, что перевод БД в single-mode поможет (впрочем, как и отключение web-сайта), есть ли какие-нибудь менее радикальные способы (типа - насильно экслюзивно заблокировать таблицу с полнотекстовым индексом, отрубив при этом все текущие блокировки)?
Но тогда по таймауту будут отваливаться клиенты.

Ну а заблокировать таблицу можно примерно так:
begin tran

select * from my_TABLE with(tablockx) where 1 = 0;
.
.
.