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


sp_fulltext_table (Transact-SQL)

 

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

Важно!

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

Область применения: SQL Server (начиная с SQL Server 2008 до текущей версии), База данных SQL V12.

Значок ссылки на разделСинтаксические обозначения в 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, чтобы данные полнотекстового индекса более не собирались для таблицы 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

    Начинает добавочное заполнение полнотекстового индекса.

    Остановить

    Прекращает добавочное заполнение.

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

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

Нет

Заметки

После деактивации полнотекстового индекса для конкретной таблицы существующий индекс остается до следующего полного заполнения. Но он не используется, так как Корпорация Майкрософт 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.

Примеры

A.Включение полнотекстового индексирования таблицы

В следующем примере создаются метаданные полнотекстового индекса для таблицы Document базы данных AdventureWorks.Cat_Desc — полнотекстовый каталог.PK_Document_DocumentID — уникальный индекс по одиночному столбцу таблицы Document.

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

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

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

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

См. также

INDEXPROPERTY (Transact-SQL)
OBJECTPROPERTY (Transact-SQL)
sp_help_fulltext_tables (Transact-SQL)
sp_help_fulltext_tables_cursor (Transact-SQL)
Хранимая процедура sp_helpindex (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
Полнотекстовый поиск и хранимые процедуры семантического поиска (Transact-SQL)