细化解析:对全文目录执行调查和清除任务
在本示例中,将执行典型的调查和清除任务。假设您已连接到 pubs 数据库,全文服务已经启动,并且正在处理虚构的 writers 表和 books 表。
1.通过执行下列存储过程,以获取一份已链接到 pubs 数据库的所有全文目录的列表:
sp_help_fulltext_catalogs |
因为 pubs 数据库是当前数据库,该存储过程将为链接到 pubs 数据库的所有全文目录返回下列元数据:
◆全文目录的名称和整数标识符
◆全文目录根目录
◆全文目录填充状态
◆链接到此全文目录的表的数目
与上述存储过程稍有不同的另一个存储过程(在其中指定了全文目录的名称参数)可以为单个全文目录返回这方面的信息。
2.执行下列存储过程,以获取一份已为全文处理而启用的数据库中所有表的列表:
sp_help_fulltext_tables |
此存储过程为每个表返回下列元数据:
◆由两部分组成的表名
◆用作表的全文键的列的整数标识符
◆用于对全文键列施加唯一约束的索引的名称
◆表的全文状态
◆表的全文目录名
支持与此存储过程稍有不同的其它两种存储过程。如果指定了 fulltext_catalog_name 参数,将为与该全文目录链接的所有表返回这方面的信息。如果同时指定了 catalog_name 参数和 table_name 参数,或者仅指定了 table_name 参数,则为该表返回这些信息。
3.执行下列存储过程,以获取一份已为全文处理而启用的数据库中所有表的列表:
sp_help_fulltext_columns |
此存储过程将为每个列返回下列元数据:
◆列中由两部分组成的表名
◆列的名称和整数标识符
与此存储过程稍有不同的一种存储过程(在其中指定了表名参数)可以为单个表返回这方面的信息。
经过编译的列表会指出一些问题。除 mytable 表外不再有任何表使用 mycatalog 全文目录,而 mytable 表不再有任何可被查询的全文列。
4.执行下列存储过程,以取消将 mytable 表注册为用于全文处理:
sp_fulltext_table 'MyTable', 'drop' |
这将除去该表有关全文索引的元数据。直至下一次完全填充或除去全文目录之前,现有的全文索引将保持原样。但它也保持为不使用状态。有关更多信息,请参见 sp_fulltext_table。
5.通过执行下列存储过程,从文件系统中除去 mycatalog 全文目录并从系统表中除去其元数据:
sp_fulltext_catalog 'MyCatalogue', 'drop' |
必须完成步骤 4 才能除去全文目录,因为必须更新其文本目录的元数据才能删除所有全文索引。
在文件系统中至少存在一个不再有相应的 SQL Server 元数据的全文目录。这种现象的原因通常是因为删除了某个数据库。
6.通过执行下列存储过程,从文件系统中删除所有在 SQL Server 中不再有元数据的全文目录:
sp_fulltext_service 'Clean_Up' |
MixedUpCtlg 全文目录的结构与当前在 SQL Server 中为它记录的元数据不匹配。当全文目录正在被除去,或者数据库正在被除去并且 Microsoft 搜索服务不在运行时,就可能发生这种情况。除去操作会更改与全文目录相关的元数据,但无法完成该操作,因为 Microsoft 搜索服务没有运行。这将导致 SQL Server 中的全文元数据与文件系统中相关的物理全文目录之间不一致。通过唤醒调用 sp_fulltext_service 上的清除操作可以纠正这种不一致。(Microsoft 搜索服务必须正在运行。)
7.执行下列存储过程,以重建(但不重新填充)MixedUpCtlg 全文目录:
sp_fulltext_catalog 'MixedUpCtlg', 'Rebuild' |
带有 ENABLE 选项的 sp_fulltext_database 存储过程可以用于重建所有已知的全文目录。
8.执行下列存储过程,以启动对 MixedUpCtlg 全文目录的完全填充:
sp_fulltext_catalog 'MixedUpCtlg', 'start_full' |
(责任编辑:卢兆林)