Как предотвратить полное заполнение индекса после включения CHANGE_TRACKING при изменении индекса FULLTEXT? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть база данных SQL с таблицей, содержащей несколько BLOB-файлов.Столбец, содержащий содержимое файла, имеет полнотекстовую индексацию и поэтому отслеживается при любых изменениях.При обнаружении изменений SQL Server обновляет базовый полнотекстовый индекс, содержащий информацию о сохраненном файле.

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

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

enter image description here

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

enter image description here

Однако после выполнения ALTER FULLTEXT INDEX ON [Table] SET CHANGE_TRACKING MANUAL полное заполнение индекса запускается автоматически, и запрос к таблице больше не возвращает тот же файл, что ирезультаты поиска.

Мой план состоял в том, чтобы выполнить ALTER FULLTEXT INDEX ON [Table] START UPDATE POPULATION, который смотрит только на отслеженные изменения (как pили документация ), чтобы определить, как следует обновлять полнотекстовый индекс.Это терпит неудачу, так как полное заполнение создает новый индекс, впоследствии удаляя все ссылки на ранее сохраненный файл.

Есть ли способ запретить SET CHANGE_TRACKING MANUAL запускать полное заполнение?

...