sp_fulltext_column (Transact-SQL)

适用于:SQL ServerAzure Synapse Analytics

指定表的某个特定列是否参与全文索引。

重要

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 ALTER FULLTEXT INDEX

Transact-SQL 语法约定

语法

sp_fulltext_column
    [ @tabname = ] N'tabname'
    , [ @colname = ] N'colname'
    , [ @action = ] 'action'
    [ , [ @language = ] language ]
    [ , [ @type_colname = ] N'type_colname' ]
[ ; ]

参数

[ @tabname = ] N'tabname'

由一部分或两部分构成的表名称。 表必须在当前数据库中。 表必须具有全文索引。 @tabname为 nvarchar(517),没有默认值。

[ @colname = ] N'colname'

@tabname中的列的名称。 该列必须是字符、 varbinary(max)图像,并且不能是计算列。 @colname为 sysname,没有默认值。

SQL Server 可以创建存储在 varbinary(max)图像数据类型的列中的文本数据的全文索引。 图像和图片未编制索引。

[ @action = ] 'action'

要执行的操作。 @action是 varchar(20),没有默认值,可以是以下值之一。

说明
add @colname@tabname添加到表的非活动全文索引中。 此操作可启用列以进行全文索引。
删除 从表的非活动全文索引中删除@tabname@colname。

[ @language = ] 语言

存储在列中的数据的语言。 @language为 int,默认值为 NULL. 有关 SQL Server 中包含的语言列表,请参阅sys.fulltext_languages(Transact-SQL)。

注意

当列包含多种语言或不受支持的语言中的数据时使用 Neutral 。 默认值由服务器配置选项 默认全文语言指定。

[ @type_colname = ] N'type_colname'

@tabname中保存@colname文档类型的列的名称。 此列必须是 charncharvarcharnvarchar。 仅当@colname数据类型为 varbinary(max)图像,才使用它。 @type_colname为 sysname,默认值为 NULL.

返回代码值

0(成功)或 1(失败)。

结果集

无。

注解

如果全文索引处于活动状态,则将停止所有正在进行的填充。 此外,如果启用了活动全文索引的表启用了更改跟踪,SQL Server 可确保索引是最新的。 例如,SQL Server 停止表上的任何当前填充,删除现有索引,并启动新的填充。

如果启用了更改跟踪,并且需要在保留索引的同时从全文索引中添加或删除列,则应停用表并添加或删除所需的列。 这些操作将冻结索引。 如果以后可以开始进行填充了,则可以重新激活表。

权限

用户必须是db_ddladmin固定数据库角色的成员,或者是db_owner固定数据库角色的成员或表的所有者。

示例

以下示例将 DocumentSummary 表的 Document 列添加到表的全文索引中。

USE AdventureWorks2022;
GO
EXEC sp_fulltext_column 'Production.Document', DocumentSummary, 'add';
GO

以下示例假定已对名为 spanishTbl 的表创建了一个全文索引。 若要将 spanishCol 列添加到全文索引,可执行以下存储过程:

EXEC sp_fulltext_column 'spanishTbl', 'spanishCol', 'add', 0xC0A;
GO

运行此查询时:

SELECT *
FROM spanishTbl
WHERE CONTAINS (spanishCol, 'formsof(inflectional, trabajar)');

结果集将包括内含不同形态的 trabajar 一词的行,如 trabajotrabajamostrabajan

注意

在单个全文查询函数子句中列出的所有列都必须使用相同的语言。