sp_fulltext_column (Transact-SQL)
适用于:SQL Server Azure Synapse Analytics
指定表的某个特定列是否参与全文索引。
重要
在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 ALTER FULLTEXT INDEX 。
语法
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。
注意
当列包含多种语言或不受支持的语言中的数据时使用 Neutral
。 默认值由服务器配置选项 默认全文语言指定。
[ @type_colname = ] N'type_colname'
@tabname中保存@colname文档类型的列的名称。 此列必须是 char、 nchar、 varchar 或 nvarchar。 仅当@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
一词的行,如 trabajo
、trabajamos
和 trabajan
。
注意
在单个全文查询函数子句中列出的所有列都必须使用相同的语言。