sp_fulltext_catalog (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
创建和删除全文目录,并启动和停止目录的索引操作。 可为每个数据库创建多个全文目录。
重要
在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 CREATE FULLTEXT CATALOG、 ALTER FULLTEXT CATALOG 和 DROP FULLTEXT CATALOG 。
语法
sp_fulltext_catalog
[ @ftcat = ] N'ftcat'
, [ @action = ] 'action'
[ , [ @path = ] N'path' ]
[ ; ]
参数
[ @ftcat = ] N'ftcat'
全文目录的名称。 每个数据库的目录名称必须是唯一的。 @ftcat 为 sysname,没有默认值。
[ @action = ] 'action'
要执行的操作。 @action是 varchar(20),可以是这些值之一。
注意
可根据需要创建、删除和修改全文目录。 但请避免同时对多个目录的架构进行更改。 可以使用存储过程执行 sp_fulltext_table
这些操作,这是建议的方法。
值 | 说明 |
---|---|
create | 在文件系统中创建一个新的空全文目录,并在@ftcat和@path(如果存在)值中添加关联的行sysfulltextcatalogs 。 @ftcat在数据库中必须是唯一的。 |
删除 | 删除@ftcat,方法是将其从文件系统中删除并删除关联的行sysfulltextcatalogs 。 如果此目录中包含一个或多个表的索引,则此操作将失败。 sp_fulltext_table '<table_name>', 'drop' 应执行以从目录中删除表。如果目录不存在,则会显示错误。 |
start_incremental | 为 @ftcat启动增量填充。 如果目录不存在,则会显示错误。 如果一个全文索引填充已经是活动的,则会显示一个警告,而不发生填充操作。 由于增量填充仅检索更改的行进行全文索引,前提是 表中存在全文索引的时间戳 列。 |
start_full | 启动 @ftcat的完整填充。 即使与此全文目录相关联的每一个表的每一行都进行过索引,也会对其检索全文索引。 |
stop | 停止@ftcat的索引填充。 如果目录不存在,则会显示错误。 如果已经停止了填充,则不会显示警告。 |
rebuild | 重新生成 @ftcat。 重新生成目录时,将删除现有目录,并在其原位置创建一个新目录。 具有全文索引引用的所有表都与此新目录相关联。 重新生成会重置数据库系统表中的全文元数据。 如果更改跟踪为 OFF,重新生成不会导致新创建的全文目录重新填充。 在这种情况下,若要重新填充,请使用start_full或start_incremental操作执行 sp_fulltext_catalog 。 |
[ @path = ] N'path'
创建操作的根目录(不是完整的物理路径)。 @path为 nvarchar(100),默认值NULL
为 ,指示使用安装程序中指定的默认位置。
这是目录中的FTData
MSSQL
子目录;例如C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\FTData
。 指定的根目录必须驻留在同一台计算机上的驱动器上,它不仅仅是驱动器号,不能是相对路径。 不支持网络驱动器、可移动驱动器、软盘和 UNC 路径。 必须在与 SQL Server 实例关联的本地硬盘驱动器上创建全文目录。
仅当创建@action时,@path才有效。 对于创建(停止、重新生成等)以外的操作,必须NULL
或省略@path。
如果 SQL Server 实例是群集中的虚拟服务器,则指定的目录目录需要位于 SQL Server 资源所依赖的共享磁盘驱动器上。 如果未 指定@path ,则默认目录目录的位置位于共享磁盘驱动器上,位于安装虚拟服务器时指定的目录中。
返回代码值
0
(成功)或 1
(失败)。
结果集
无。
注解
start_full操作用于在 @ftcat 中创建全文数据的完整快照。 start_incremental操作用于仅对数据库中已更改的行重新编制索引。 仅当表具有类型 时间戳的列时,才能应用增量填充。 如果全文目录中的表不包含类型 时间戳的列,该表将进行完全填充。
全文目录及索引数据存储在某些文件中,这些文件是在全文目录所在目录中创建的。 如果未指定@path,则全文目录目录将创建为@path中指定的目录的子目录,或者在服务器默认的全文目录目录中创建。 全文目录目录的名称以保证它在服务器上唯一的方式生成。 因此,一个服务器上所有的全文目录所在目录可以共享相同的路径。
权限
调用方必须是db_owner角色的成员。 根据请求的操作,不应拒绝调用方对目标全文目录的 ALTER 或 CONTROL 权限( db_owner 具有)。
示例
A. 创建全文目录
此示例在AdventureWorks2022
数据库中创建一个空的全文目录Cat_Desc
。
USE AdventureWorks2022;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'create';
GO
B. 重新生成全文目录
本示例在数据库中重新生成现有的全文目录Cat_Desc
AdventureWorks2022
。
USE AdventureWorks2022;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'rebuild';
GO
°C 启动全文目录的填充
此示例开始目录的完整 Cat_Desc
填充。
USE AdventureWorks2022;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'start_full';
GO
D. 停止全文目录的填充
此示例停止目录的 Cat_Desc
填充。
USE AdventureWorks2022;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'stop';
GO
E. 删除全文目录
此示例删除 Cat_Desc
目录。
USE AdventureWorks2022;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'drop';
GO