CREATE FULLTEXT CATALOG (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

为数据库创建全文目录。 一个全文目录可以包含多个全文索引,但一个全文索引只能用于构成一个全文目录。 每个数据库可以不包含全文目录或包含多个全文目录。

不能在 master、model 或 tempdb 数据库中创建全文目录

重要

从 SQL Server 2008 (10.0.x) 开始,全文目录为虚拟对象且不再属于任何文件组。 全文目录是表示一组全文索引的逻辑概念。

Transact-SQL 语法约定

语法

  
CREATE FULLTEXT CATALOG catalog_name  
     [ON FILEGROUP filegroup ]  
     [IN PATH 'rootpath']  
     [WITH <catalog_option>]  
     [AS DEFAULT]  
     [AUTHORIZATION owner_name ]  
  
<catalog_option>::=  
     ACCENT_SENSITIVITY = {ON|OFF}  
  

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

catalog_name

新目录的名称。 在当前数据库的所有目录名中,该目录名必须唯一。 与全文目录对应的文件名(请参阅 ON FILEGROUP)在数据库的所有文件中也必须唯一。 如果该目录名已用于数据库中的其他目录,则 SQL Server 将返回错误。

目录名的长度不能超过 120 个字符。

ON FILEGROUP filegroup
从 SQL Server 2008 (10.0.x) 开始,此子句不再起作用。

IN PATH 'rootpath'

注意

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

从 SQL Server 2008 (10.0.x) 开始,此子句不再起作用。

ACCENT_SENSITIVITY = {ON|OFF}
指定该目录的全文索引是否区分重音。 在更改此属性后,必须重新生成索引。 默认情况下,将使用数据库排序规则中所指定的区分重音设置。 若要显示数据库排序规则,请使用 sys.databases 目录视图

若要确定全文目录当前的区分重音属性的设置,请对 catalog_name 使用具有 accentsensitivity 属性值的 FULLTEXTCATALOGPROPERTY 函数。 如果返回值为“1”,则全文目录区分重音;如果该值为“0”,则该目录不区分重音。

AS DEFAULT
指定该目录为默认目录。 如果在未显式指定全文目录的情况下创建全文索引,则将使用默认目录。 如果现有全文目录已标记为 AS DEFAULT,则将新目录设置为 AS DEFAULT 将使该目录成为默认全文目录。

AUTHORIZATION owner_name
将全文目录的所有者设置为数据库用户名或角色的名称。 如果 owner_name 是角色,则该角色必须是当前用户所属角色的名称,或者运行语句的用户必须是数据库所有者或系统管理员

如果 owner_name 是用户名,则该用户名必须是下列名称之一

  • 运行语句的用户的名称。

  • 执行命令的用户拥有其模拟权限的用户的名称。

  • 或者,执行命令的用户必须是数据库所有者或系统管理员。

owner_name 还必须拥有对指定全文目录的 TAKE OWNERSHIP 权限

注解

全文目录 ID 从 00005 开始,每创建一个新目录,ID 值就会递增 1。

权限

用户必须对数据库具有 CREATE FULLTEXT CATALOG 权限,或者是 db_owner 或 db_ddladmin 固定数据库角色的成员

示例

下面的示例将创建一个全文目录和一个全文索引。

USE AdventureWorks2022;  
GO  
CREATE FULLTEXT CATALOG ftCatalog AS DEFAULT;  
GO  
CREATE FULLTEXT INDEX ON HumanResources.JobCandidate(Resume) KEY INDEX PK_JobCandidate_JobCandidateID;  
GO  

另请参阅