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 (неуспешное завершение)

Результирующие наборы

Нет

Замечания

После деактивации полнотекстового индекса для конкретной таблицы существующий индекс остается до следующего полного заполнения; однако он не используется, так как Microsoft SQL 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 базы данных AdventureWorks2008R2. Cat_Desc — полнотекстовый каталог. PK_Document_DocumentID — уникальный индекс по одиночному столбцу таблицы Document.

USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO

В. Удаление полнотекстового индекса

В этом примере удаляются метаданные полнотекстового индекса таблицы Document базы данных AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO