指定表的某个特定列是否参与全文索引。
sp_fulltext_column [ @tabname = ] 'qualified_table_name' ,
[ @colname = ] 'column_name' ,
[ @action = ] 'action'
[ , [ @language = ] 'language' ]
[ , [ @type_colname = ] 'type_column_name' ]
[@tabname =] 'qualified_table_name'
一段或两段的表名。该表必须已经存在于当前的数据库中。该表必须有全文索引。qualified_table_name 的数据类型为 nvarchar(517),无默认值。
[@colname =] 'column_name'
是 qualified_table_name 中某个列的名称。该列必须是一个字符,或是一个 image 列,不能是一个已计算列。column_name 的数据类型为 sysname,无默认值。
说明 SQL Server 能够创建 text 数据的全文索引,text 数据存储在具有 image 数据类型的列中。不对图像或图片编制索引。
[@action =] 'action'
将要执行的动作,action 的数据类型为 varchar(20),无默认值,可以是下列值中的一个。
值 | 描述 |
---|---|
add | 将 qualified_table_name 的 column_name 添加到表的非活动全文索引中。该动作启用全文索引的列。 |
drop | 从表的非活动全文索引中删除 qualified_table_name 的 column_name。 |
[@language =] 'language'
存储在列中的数据的语言。下表列出了包括在 SQL Server 中的语言。
说明 当某个列包含使用多种语言的数据或不支持语言的数据时,请使用"中性"设置。由配置选项 default full-text language 指定默认值。
区域设置 | 区域设置 ID |
---|---|
中性 | 0 |
简体中文 | 0x0804 |
繁体中文 | 0x0404 |
荷兰语 | 0x0413 |
英国英语 | 0x0809 |
美国英语 | 0x0409 |
法语 | 0x040c |
德国 | 0x0407 |
意大利 | 0x0410 |
日语 | 0x0411 |
朝鲜语 | 0x0412 |
现代西班牙语 | 0x0c0a |
普通瑞典语 | 0x041d |
[@type_colname =] 'type_column_name'
qualified_table_name 中某个列的名称,该列存放着 column_name 的文档类型。该列必须为 char、nchar、varchar 或 nvarchar。只有当 column_name 的数据类型为 image 时才使用它。type_column_name 的数据类型为 sysname,无默认值。
0(成功)或 1(失败)
无
如果全文索引是活动的,应停止所有正在进行的填充。而且,如果一个带活动全文索引的表启用了更改跟踪,SQL 服务器确保该索引是当前的。例如,SQL Server 停止表中所有当前的填充,除去现有的索引,并启动新填充。
如果打开更改跟踪,并需要在保留索引的同时从全文索引中添加或除去列,应停用该表并添加或除去所需的列。这些动作冻结索引。当可以启动填充时,可以稍后再激活该表。
只有 sysadmin 固定服务器角色成员、db_owner 和 db_ddladmin 固定数据库角色成员和对象所有者才能执行 sp_fulltext_column。
USE Northwind
EXEC sp_fulltext_column Categories, Description, 'add'
sp_fulltext_column 'spanishTbl', 'spanishCol', 'add', 0xC0A
运行该查询时:
SELECT *
FROM spanishTbl
WHERE CONTAINS(spanishCol, 'formsof(inflectional, trabajar)')
结果集将包括带有不同形式的 trabajar的行(要使用),如 trabajo、trabajamos 和 trabajan。
说明 在单个全文查询函数子句中列出的所有列都必须使用相同的语言。
sp_help_fulltext_columns_cursor