sp_fulltext_table (Transact-SQL)
Отмечает таблицу для полнотекстового индексирования или снимает эту отметку.
Важно! |
---|
В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Вместо этого используйте CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX и DROP FULLTEXT INDEX. |
Синтаксис
sp_fulltext_table
[ @tabname= ] 'qualified_table_name'
, [ @action= ] 'action'
[
, [ @ftcat= ] 'fulltext_catalog_name'
, [ @keyname= ] 'unique_index_name'
]
Аргументы
[ @tabname=] 'qualified_table_name'
Имя таблицы, состоящее из одной или двух частей. Таблица должна существовать в текущей базе данных. Параметр qualified_table_name относится к типу nvarchar(517) и не имеет значения по умолчанию.[ @action=] 'action'
Выполняемое действие. Параметр action относится к типу nvarchar(50), не имеет значения по умолчанию и может принимать одно из следующих значений.Значение
Описание
Create
Создает метаданные для полнотекстового индекса таблицы, указанной параметром qualified_table_name, и определяет, что данные этого индекса должны находиться в fulltext_catalog_name. Это действие также определяет unique_index_name в качестве столбца полнотекстового ключа. Этот уникальный индекс уже должен существовать и быть определенным для одного из столбцов таблицы.
Полнотекстовый поиск по этой таблице не будет выполняться, пока полнотекстовый каталог не будет заполнен.
Drop
Удаляет метаданные для полнотекстового индекса таблицы qualified_table_name. Если при этом производится полнотекстовый поиск, он автоматически прекращается перед удалением метаданных. Перед удалением полнотекстового индекса необязательно удалять столбцы.
Activate
Активирует возможность собирать данные для полнотекстового индекса таблицы qualified_table_name после деактивации. Для активации в полнотекстовый индекс должен входить хотя бы один столбец.
Полнотекстовый индекс автоматически становится активным (для заполнения) как только добавляется первый столбец для индексирования. Если из индекса удален последний столбец, индекс становится неактивным. Если включено отслеживание изменений, неактивный индекс начинает новое заполнение.
Обратите внимание, что фактического заполнения полнотекстового индекса при этом не происходит, выполняется простая регистрация таблицы в полнотекстовом каталоге файловой системы, чтобы строки из qualified_table_name могли быть получены во время следующего заполнения полнотекстового индекса.
Deactivate
Деактивирует полнотекстовый индекс таблицы qualified_table_name, чтобы данные полнотекстового индекса более для этой таблицы не собирались. Метаданные полнотекстового индекса сохраняются, и индексирование может быть активировано снова.
Если включено отслеживание изменений, деактивация активного индекса закрепляет состояние индекса: любое текущее заполнение прекращается, и новые изменения в индекс не попадают.
start_change_tracking
Начинает добавочное заполнение полнотекстового индекса. Если у таблицы нет временной метки, начать полное заполнение индекса. Начать отслеживать изменения таблицы.
Отслеживание изменений для полнотекстового индекса не фиксирует операции WRITETEXT или UPDATETEXT, выполненные над столбцами индекса, относящимися к типу image, text или ntext.
stop_change_tracking
Прекращает отслеживать изменения таблицы.
update_index
Внести текущий набор изменений таблицы в полнотекстовый индекс.
start_background_updateindex
Начинает внесение изменений таблицы в полнотекстовый индекс по мере их появления.
stop_background_updateindex
Прекращает внесение изменений таблицы в полнотекстовый индекс по мере их появления.
start_full
Выполняет полное заполнение полнотекстового индекса.
start_incremental
Начинает добавочное заполнение полнотекстового индекса.
Stop
Прекращает добавочное заполнение.
[ @ftcat=] 'fulltext_catalog_name'
Допустимое имя существующего полнотекстового каталога для действия create. Для всех других действий значением этого параметра должно быть NULL. Параметр fulltext_catalog_name относится к типу sysname и принимает значение NULL по умолчанию.[ @keyname=] 'unique_index_name'
Допустимый уникальный индекс с одним ключевым столбцом, не разрешающим значения NULL для qualified_table_name, используемый в действии create. Для всех других действий значением этого параметра должно быть NULL. Параметр unique_index_name относится к типу sysname и принимает значение NULL по умолчанию.
Значения кодов возврата
0 (успешное завершение) или 1 (неуспешное завершение)
Результирующие наборы
Нет
Замечания
После деактивации полнотекстового индекса для конкретной таблицы существующий индекс остается до следующего заполнения; однако он не используется, так как MicrosoftSQL Server блокирует запросы к деактивированным таблицам.
Если таблица активирована вновь, но индекс не заполняется снова, старый индекс доступен для запросов к остававшимся, но не новым столбцам, для которых включено полнотекстовое индексирование. Данные из удаленных столбцов используются в запросах поиска по всем столбцам полнотекстового индекса.
Если после определения таблицы для полнотекстового индексирования изменить тип данных полнотекстового уникального ключевого столбца с одного на другой путем изменения типа данных этого столбца или смены собственно ключевого столбца и при этом не начать новое полное заполнение, последующие запросы могут возвращать ошибку: «Преобразование к типу data_type для ключевого значения полнотекстового поиска key_value завершилось неудачно». Чтобы избежать этого, удалите определение полнотекстового индекса этой таблицы с помощью действия drop хранимой процедуры sp_fulltext_table и переопределите его с помощью процедур sp_fulltext_table и sp_fulltext_column.
Столбец полнотекстового ключа должен содержать значения размером не более 900 байт. Из соображений производительности рекомендуется делать размер ключевого столбца как можно меньшим.
Разрешения
Только члены предопределенной роли сервера sysadmin или предопределенных ролей базы данных db_owner и db_ddladmin или пользователи с разрешением REFERENCES на полнотекстовый каталог могут выполнять процедуру sp_fulltext_table.
Примеры
А. Включение полнотекстового индексирования таблицы
В следующем примере создаются метаданные полнотекстового индекса для таблицы Document базы данных AdventureWorks. Cat_Desc — полнотекстовый каталог. PK_Document_DocumentID — уникальный индекс по одиночному столбцу таблицы Document.
USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'create', 'Cat_Desc', 'PK_Document_DocumentID';
--Add some columns
EXEC sp_fulltext_column 'Production.Document','DocumentSummary','add';
-- Activate the full-text index
EXEC sp_fulltext_table 'Production.Document','activate';
GO
Б. Активация отслеживания изменений и их внесение в индекс
В следующем примере будет начато отслеживание изменений таблицы и их внесение в полнотекстовый индекс по мере появления.
USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO
В. Удаление полнотекстового индекса
В этом примере удаляются метаданные полнотекстового индекса таблицы Document базы данных AdventureWorks.
USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO