Поделиться через


sp_fulltext_table (Transact-SQL)

Отмечает таблицу для полнотекстового индексирования или снимает эту отметку.

Важное примечаниеВажно!

В будущей версии Microsoft SQL Server эта возможность будет удалена. Избегайте использования этой возможности в новых разработках и запланируйте изменение существующих приложений, в которых она применяется. Вместо этого используйте CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX и DROP FULLTEXT INDEX.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

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