如何移动、 复制,和备份全文目录文件夹和文件

文章翻译 文章翻译
文章编号: 240867 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

不会 SQL Server 数据库中存储的全文目录和索引。Microsoft 搜索服务可管理的单独文件中存储的全文目录和索引。全文目录文件不能恢复 Microsoft SQL Server 恢复过程中。此外,不能使用处理 SQL 语句备份和恢复,备份和还原全文目录文件。恢复或还原操作后必须单独重新同步全文目录。仅在 Microsoft Windows NT 的系统管理员和 Microsoft 搜索服务可以访问的全文目录文件。

虽然您不能使用 SQL Server 数据库备份全文目录,但您可以使用的生产数据库含有大表的全文搜索启用。如果这样做可能已移动、 备份,或还原这些全文目录和他们的生产数据库。在运行时为全文目录填充或 $ 重新同步长度可能大于在典型的维护窗口。本文介绍了一种不同的方法,您可以使用移动或复制目录,而不启动完全填充。 此方法可避免大量的停机时间。

本文介绍可用于复制、 移动,和备份或恢复某些限制中的全文目录文件夹和文件的几种方法:
  • SQL Server 版本所使用的是相同的。
  • 全文目录文件夹和文件必须在本地驱动器上。
  • 全文目录文件夹和文件都必须保留其原始名称和文件夹的内容。
  • 全文启用的数据库标识符和目录标识符必须与两台服务器上时将移动或复制服务器之间的全文目录。
警告这些过程不支持针对 SQL Server 故障转移群集中的实例。

全文目录维护作为文件夹和文件的集合。全文目录的默认位置是:

Microsoft SQL Server 7.0
\Mssql7\FTDATA

Microsoft SQL Server 2000
默认实例: 计划 Files\Microsoft SQL Server\MSSQL\FTDATA
命名实例: 计划 Files\Microsoft SQL Server\MSSQL $ instancename\FTDATA

每个全文目录及其相关的文件维护和下一个文件夹使用以下命名约定的 dbid 其中是相关联的数据库的标识符以及 ftcatid 的全文目录标识符的位置:

SQLxxxxx (dbid) yyyyy (ftcatid

每个 ftcatid 都是唯一在相关联的数据库。

重要此分区、 方法,或任务包含告诉您如何修改注册表的步骤。但是,如果注册表修改不当可能会出现严重问题。因此,请确保您仔细按照这些步骤。附加的保护注册表之前先备份您对其进行修改。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756如何备份和还原在 Windows 注册表

若要在独立计算机或群集上备份全文目录

  1. 停止在独立计算机上的 Microsoft 搜索服务。一个群集的 SQL Server 配置将全文资源联机。停止 Microsoft 搜索服务后,您不能运行使用 CONTAINS 或 FREETEXT,谓词的全文查询或在行集值函数 CONTAINSTABLE 或 FREETEXTTABLE 针对数据库。 此外,不起作用的全文本搜索查询,并且您收到以下错误消息:
    服务器: 消息 7602,级别 16 状态 1 行 2 全文服务 (Microsoft 搜索) 不可用。系统管理员必须启动此服务。
  2. 使用 Microsoft Windows NT 文件系统备份,之类的实用程序备份的执行,然后备份全文目录、 文件夹,和 files.The 系统表的全文目录 (sysfulltextcatalogs) 备份与 SQL Server 数据库。
  3. 如果您必须分别备份目录,请备份以下注册表项:
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    [FT_Catalog_Folder] 是该编录文件夹名称"SQLxxxxx(dbid) yyyyy(ftcatid)"
    对于 SQL Server 一个命名实例注册表项是 \SQLServer$ InstanceName \。
  4. 2.备份以下注册表项来备份所有目录: (这备份所有的全文目录在服务器上)。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    对于 SQL Server 一个命名实例注册表项是 \SQLServer$ InstanceName \。

若要恢复到相同的本地驱动器或路径的同一台服务器上的全文目录

  1. 停止 Microsoft 搜索服务。注意仅当数据库已被删除,请执行步骤 2。否则,请转到步骤 3。
  2. 还原或附加的数据库启用全文的位置。 将数据库还原后,请确保数据库 ID (dbid) 是相同其备份时。
    注意如果数据库连接通过 sp_attach_db 命令,请确保您在运行 exec sp_fulltext_database 启用命令来启用全文的数据库。
  3. 若要确定该 dbid,运行下面的代码: 还原单独的目录的
    Use dbname
    go
    select db_id()
    笔记,请按照步骤 4。若要恢复所有目录,请转到第 5 步。
  4. 基于前面的备份说明还原备份的注册表项。您可能希望备份注册表,则在尝试此步骤前。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    [FT_Catalog_Folder] 是该编录文件夹名称"SQLxxxxx(dbid) yyyyy(ftcatid)"
    对于 SQL Server 一个命名实例注册表项是 \SQLServer$ InstanceName \。
  5. 若要恢复服务器上的所有目录,都还原以下注册表项。您可能希望备份注册表,则在尝试此步骤前。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    对于 SQL Server 一个命名实例注册表项是 \SQLServer$ InstanceName \。
  6. 到备份中的默认位置,请从备份中还原该目录。
  7. 重新启动 Microsoft 搜索服务。
  8. 确认新的全文目录文件夹和文件在通过使用 TRANSACT-SQL SELECT 语句都起作用,并在 where 子句中使用 CONTAINS 或 FREETEXT 谓词。

若要移动或复制本地驱动器或正在运行 SQL Server 的那一台计算机上的路径之间的全文目录

  1. 确认使用 sp_help_fulltext_catalogs FT_Catalog_Name' 的全文目录名称和本地驱动器或路径。请记录下全文目录的驱动器号和完全限定的路径,以供以后使用。
  2. 停止 Microsoft 搜索服务。只有当数据库已被删除,请执行步骤 3 和步骤 4,或如果目录已被删除,否则,请转到步骤 5。
  3. 还原或附加的数据库启用全文的位置。 将数据库还原后,请确保数据库 ID (dbid) 是相同其备份时。

    注意如果数据库连接通过 sp_attach_db 命令,请确保您在运行 exec sp_fulltext_database 启用命令来启用全文的数据库。

    若要确定该 dbid,运行下面的代码:
    Use dbname
    go
    select db_id()
  4. 还原以下注册表项。您可能希望备份注册表,则在尝试此步骤前。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    [FT_Catalog_Folder] 是该编录文件夹名称"SQLxxxxx(dbid) yyyyy(ftcatid)"
    对于 SQL Server 一个命名实例注册表项是 \SQLServer$ InstanceName \。
  5. 确定新的全文目录的本地驱动器或路径。 将全文目录复制到新位置。
  6. 允许系统表更新通过使用系统存储过程 sp_configure RECONFIGURE 与重写,然后更新该 [database_name] dbo.sysfulltextcatalogs 到新本地驱动器或路径目标为全文目录默认文件夹的如 d:\FTData 路径列。
  7. 使用 Windows NT 4.0 资源工具包 regfind 实用程序来查找和替换在以下 HKLM 注册表项值对每个全文目录文件夹 (FT_Catalog_Folder) 中 (例如 SQL0000500005):
    \SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    此外,请确保使用直引号 ("") 将注册表项括起来,这两个在 -p-r 参数。例如:
    -m \\server_2 -p "<Key Name>" <Old_FT_Catalog_Path_and_Folder> -r <New_FT_Catalog_Path_and_Folder>

    注意: 替换 < 项名称 >、 <Old_FT_Catalog_Path_and_Folder>,和 <New_FT_Catalog_Path_and_Folder> 与适当的值。
    例如: -m \\server_2-p"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\sqlserver$SQL2k\SQL0000500005"d:\programme\Microsoft SQL Server\MSSQL $ SQL2K\FTDATA\SQL0000500005-r d:\programme\Microsoft SQL Server\MSSQL $ SQL2K\FTDATA\New Location\SQL0000500005

    有关使用 regfind 实用程序的语法的详细信息,键入 DOS 命令提示符从以下参数: regfind / 吗?
  8. 重新启动 Microsoft 搜索服务。
  9. 确认新的全文目录文件夹和文件在通过使用 TRANSACT-SQL SELECT 语句都起作用,并在 where 子句中使用 CONTAINS 或 FREETEXT 谓词。

若要复制到同一个本地驱动器或路径的 SQL Server 实例之间的全文目录

下面的步骤演示了如何移动或复制一个全文目录文件夹和文件从一台计算机正在运行 SQL Server (server_1) 到另一台计算机正在运行 SQL Server (server_2)。本文假定 SQL Server 已安装的全文本搜索,并在两台服务器上存在的相同的数据库和表标识符。到另一个的全文目录从 SQL Server 的一个实例将成功副本的数据库 id 必须是相同的。因此,最好让 server_2 (的要复制目录) 是在 server_1.Confirm server_1 和 server_2 dbids 的都是相同的一个精确副本 (克隆)。这样做两台服务器上运行以下命令: 到交换 dbids 获取 server_2 上, 正确的 dbid
Use dbname
go
select db_id()
使用未 sp_detach_dbsp_attach_db 分离和重新连接正确的数据库。例如有两个的数据库,如 TestDB(dbid = 7) 和 PerfDB (dbid = 8)、 断开连接这两个的数据库并重新然后 第一个 连接 PerfDB 数据库,然后 TestDB 数据库。此交换在 dbids: 对于 TestDB 的 dbid 成为 8,对于 PerfDB dbid 成为 7。池中的可用 dbids 最低的 dbid 总是先使用。

警告:若要执行此操作 之前 分离该的数据库确保这两个数据库没有任何全文目录,它们不是全文启用。请参阅"清理向上过程"中,更多信息部分的步骤以除去全文目录,并禁用全文本数据库。
  1. 确认 master.dbo.sysdatabases dbid 值对于全文启用数据库是在两台服务器上相同的。
  2. 确认该 [database_name] dbo.sysobjects 全文启用表的 ID 值是在两台服务器上相同。有关如何获取表 ID 值,请参见 SQL Server 简介册中的"object_id"主题的详细信息。
  3. 确认的全文目录名称和本地驱动器或路径都是相同的两个服务器上通过使用 sp_help_fulltext_catalogs FT_Catalog_Name
  4. 停止 server_1 和 server_2 上的 Microsoft 搜索服务。
  5. 上 server_1 驱动器号映射到相应的驱动器或 server_2 上的路径。
  6. 全文目录文件夹和您标识的文件在第 3 步中从 server_1 server_2 要通过使用复制 DOS 命令 xcopy。使用完全限定的全文目录的驱动器或路径和文件夹名称作为源位置和映射的全文目录的驱动器或路径和文件夹名称中作为目标位置。如果目标文件夹不存在于 server_2 上,使用 xcopy切换/I/ E 创建所有的目标文件夹。若要恢复所有目录,将复制到 server_2 的所有目录文件夹。
  7. 您可以使用 DOS 命令 RMDIR/S/Q [FT_Catalog_drive/路径] 上 server_1 删除 server_1 上的全文目录文件。

    注意若要恢复单个目录,请执行步骤 8。若要恢复所有目录,请转到步骤 9。
  8. 还原备份基于更早版本的说明的注册表项。您可能希望备份注册表,则在尝试此步骤前。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer [FT_Catalog_Folder]
    [FT_Catalog_Folder] 是该编录文件夹名称"SQLxxxxx(dbid) yyyyy(ftcatid)"
    对于 SQL Server 一个命名实例注册表项是 \SQLServer$ InstanceName \。
  9. 若要恢复服务器上的所有目录,都还原以下注册表项。但是,如果这样做您丢失 server_2 上的所有现有目录后执行此步骤。您可能希望备份注册表,则在尝试此步骤前。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    注意默认状态下,全文的二进制文件的位置是:
    SQL Server 7.0: \Mssql7\FTDATA
    Microsoft。 SQL Server 2000 默认实例: \Program Files\Microsoft SQL Server\MSSQL\FTDATA
    SQL Server 2000 命名实例: MSSQL $ InstanceName \FTDATA
    这些位置和文件夹路径为不同的计算机可能会有所不同。在这种情况下,您必须更改两个注册表项,以便完成 server_2 上的还原后路径指向全文的二进制文件的正确的位置。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    您可以使用 regfind 实用程序来查找注册表项并更改全文的二进制文件的位置。
  10. 重新启动两台服务器上的 Microsoft 搜索服务。
  11. 确认新的全文目录文件夹和文件在通过使用 TRANSACT-SQL SELECT 语句都起作用,并在 where 子句中使用 CONTAINS 或 FREETEXT 谓词。

更多信息

下面的 SQL Server 脚本到一个不同的本地驱动器或路径位置上 server_2 演示如何移动或""全文目录文件夹从迁移 SQL Server 7.0 (server_1) 到另一台计算机正在运行 SQL Server 7.0 (server_2) 的。本文假定 SQL Server 7.0 全文本搜索与基于 Windows NT 4.0 的计算机上安装了以及两个服务器上存在相同的数据库和表标识符。

下面的图例 Pubs 而言 (dbid = 5) 数据库和表 pub_info (id = 645577338) 是全文启用并填充这两个服务器上。server_2 替换您的服务器名称和您的全文目录文件夹名和驱动器或路径替换为全文目录文件夹名和驱动器或路径。

您必须登录为服务器的本地管理员组的成员,而且必须 SQL Server sysadmin 服务器角色 (或登录为"sa") 的成员。此外,您必须是数据库所有者 (DBO) 运行以下 SQL Server 数据库的脚本。

在两台服务器上运行以下 SQL Server 脚本:
use pubs
go
sp_fulltext_service 'clean_up'
go
sp_fulltext_database 'enable'
go

-- Creates and activates the full-text catalog: PubInfo, if it does not exist.
-- Drops, re-creates and activates the full-text catalog: PubInfo, if it does
-- exist.
IF OBJECTPROPERTY ( object_id('pub_info'),
                    'TableHasActiveFulltextIndex') = 1
BEGIN
    print 'Table pub_info is Full-Text Enabled, dropping Full-Text Index
& Catalog...'
    EXEC sp_fulltext_table 'pub_info', 'drop'
    EXEC sp_fulltext_catalog 'PubInfo', 'drop'
    print 'Table pub_info is NOT Full-Text Enabled, creating FT Catalog,
Index & Activating...'
    EXEC sp_fulltext_catalog 'PubInfo', 'create'
    EXEC sp_fulltext_table 'pub_info', 'create', 'PubInfo', 'UPKCL_pubinfo'
    EXEC sp_fulltext_column 'pub_info', 'pub_id', 'add'
    EXEC sp_fulltext_column 'pub_info', 'pr_info', 'add'
    EXEC sp_fulltext_table 'pub_info', 'activate'
END
ELSE IF OBJECTPROPERTY ( object_id('pub_info'),'TableHasActiveFulltextIndex') = 0
BEGIN
    print 'Table pub_info is NOT Full-Text Enabled, creating FT Catalog,
Index & Activating...'
    EXEC sp_fulltext_catalog 'PubInfo', 'create'
    EXEC sp_fulltext_table 'pub_info', 'create', 'PubInfo', 'UPKCL_pubinfo'
    EXEC sp_fulltext_column 'pub_info', 'pub_id', 'add'
    EXEC sp_fulltext_column 'pub_info', 'pr_info', 'add'
    EXEC sp_fulltext_table 'pub_info', 'activate'
END
go -- Confirm Database ID, Object ID, FT Catalog ID and FT folder(default)
   -- location.
select dbid, name from master.dbo.sysdatabases where dbid = DB_ID('pubs')
-- dbid = 5
go
select id, name from pubs.dbo.sysobjects where id = object_id('pub_info') 
go
sp_help_fulltext_catalogs 'PubInfo' 
go
sp_help_fulltext_tables 'PubInfo', 'pub_info' 
go
sp_help_fulltext_columns 'pub_info' 
go
exec master..xp_cmdshell 'dir d:\MSSQL70\FTDATA'
go

--- After full-text is enabled and activated, start full crawl/population
BEGIN
SET NOCOUNT ON
EXEC sp_fulltext_catalog 'PubInfo', 'start_full'
--
--  Wait for crawl to complete
--  NOTE: Forlarger tables, increase the WAITFOR DELAY time appropriately
--
DECLARE @status int, @itemCount int, @keyCount int, @indexSize int
SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
WHILE (@status <> 0)
BEGIN
  WAITFOR DELAY '00:00:01' -- wait for 1 second before checking FT
                           -- Populatestatus...
  SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
END
WAITFOR DELAY '00:00:05' -- wait for 5 seconds to receive correct FT Property
                         -- info (add more time for larger tables)...
SET @itemCount = FullTextCatalogProperty('PubInfo', 'itemcount')
SET @keyCount = FullTextCatalogProperty('PubInfo', 'uniquekeycount')
SET @indexSize = FullTextCatalogProperty('PubInfo', 'indexsize')
PRINT 'Nbr. of Rows FT Indexed = ' + CAST((CONVERT(varchar(10), @itemCount)
- 1) as varchar(12)) + char(09) + 'Nbr. of Unique FT Words = '
+  CONVERT(varchar(10), @keyCount) + char(09)
SET NOCOUNT OFF
END
go

-- Confirm FT population, 1 row should be returned (pub_id = 0736). 
SELECT pub_id, pr_info FROM pub_info WHERE CONTAINS(pr_info, 'moon')
go

-- Stop the Microsoft Search service on both servers
exec master..xp_cmdshell 'net stop "Microsoft Search"'
go
源服务器 (server_1) 上运行以下 SQL Server 脚本:
use pubs
go
-- Map a Drive letter to the destination server.
exec master..xp_cmdshell 'NET USE K: \\server_2\[drive]$'
go
-- Copy the destination server's FT catalog folder and files as a backup.
exec master..xp_cmdshell 'ROBOCOPY K:\MSSQL70\FTDATA\SQL0000500005
K:\MSSQL70\BACKUP\SQL0000500005 /E /NP'
go
-- Remove the destination server's full-text catalog folder and files.
exec master..xp_cmdshell 'RMDIR /S /Q K:\MSSQL70\FTDATA\SQL0000500005'
go
-- Copy the SOURCE full-text catalog folder and files to the destination server's
NEW full-text catalog location.
exec master..xp_cmdshell 'ROBOCOPY D:\MSSQL70\FTDATA\SQL0000500005
K:\FTData\SQL0000500005 /E /NP'
go
-- Restart the Microsoft Search service.
exec master..xp_cmdshell 'net start "Microsoft Search"'
go
-- Remove the mapped drive letter to the destination server, for example
-- K:\.
exec master..xp_cmdshell 'NET USE K: /delete'
go
您必须在 目标 服务器 (server_2) 上运行以下 SQL 脚本:
use master
go
-- Enable system table updates.
sp_configure allow,1
go
reconfigure with override
go

use pubs
go
-- Record full-text catalog information (Note: path = NULL)
select * from sysfulltextcatalogs
go
-- Update the full-text catalog information with the new full-text catalog location
UPDATE sysfulltextcatalogs set path = 'E:\FTData'
   WHERE ftcatid = 5
go
-- Record full-text catalog info. (Note: path = E:\FTData)
select * from sysfulltextcatalogs
go

use master
go
-- Disable system table updates.
sp_configure allow,0
go
reconfigure with override
go

-- CAUTION: Back up your registry hive before you contine!

-- Search and replace HKLM "Gather" registry keys with new full-text catalog
-- folder location [10 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\SQL0000500005
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go
-- Search and replace HKLM "Gatherer Manager" registry keys with new FT
-- catalog folder location [6 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
"\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Gathering
Manager\Applications\SQLServer\Projects\SQL0000500005"
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go
-- Search and replace HKLM indexer registry keys with new FT catalog folder
-- location [6 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
"\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\SQL0000500005"
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go

-- Restart the Microsoft Search service
exec master..xp_cmdshell 'net start "Microsoft Search"'
go

-- Confirm FT population, 1 row should be returned (pub_id = 0736). 
use pubs
go
SELECT pub_id, pr_info FROM pub_info WHERE CONTAINS(pr_info, 'moon')
go
您可以"停止"正在进行一个全文填充通过运行以下 SQL Server 代码:

警告:如果项的计数不等于行数的全文索引加上一个额外,全文目录大小可能是不正确! 启动完全爬网/填充通过其他连接后的
-- Run the following code after starting full crawl/population through another connection.
use pubs
go
BEGIN
SET NOCOUNT ON
EXEC sp_fulltext_catalog 'PubInfo', 'stop'

-- Wait for crawl to stop

--  NOTE: For larger tables, increase the WAITFOR DELAY time appropriately

DECLARE @status int, @itemCount int, @keyCount int, @indexSize int
SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
WHILE (@status <> 0)
BEGIN
  WAITFOR DELAY '00:00:01' -- wait for 1 second before checking FT
                           -- Populatestatus...
  SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
END
WAITFOR DELAY '00:00:05' -- wait for 5 seconds to receive correct FT Property
                         -- info (add more time for larger tables)...
SET @itemCount = FullTextCatalogProperty('PubInfo', 'itemcount')
SET @keyCount = FullTextCatalogProperty('PubInfo', 'uniquekeycount')
SET @indexSize = FullTextCatalogProperty('PubInfo', 'indexsize')
PRINT 'Nbr. of Rows FT Indexed = ' + CAST((CONVERT(varchar(10), @itemCount) - 1)
as varchar(12)) + char(09) + 'Nbr. of Unique FT Words = ' +
CONVERT(varchar(10), @keyCount) + char(09)
SET NOCOUNT OFF
END
go
-- Can return: Nbr. of Rows FT Indexed = -1 Nbr. of Unique FT Words = 0 
-- (depending upon when the crawl/population stopped)
清理向上过程

在两台服务器上运行以下 SQL 脚本:

删除全文索引、 全文目录,然后禁用 pubs 数据库中的全文本搜索:
use pubs
go
sp_fulltext_table 'pub_info', 'drop'
go
sp_fulltext_catalog 'PubInfo', 'drop'
go
sp_fulltext_database 'disable'
go
sp_fulltext_service 'clean_up'
go
-- end SQL Script !

引用

有关如何获取数据库的 dbid 的详细信息请参阅 SQL Server 联机丛书中的"DB_ID"主题。

若要确定数据库是否已启用全文的请参阅 SQL Server 联机丛书中的"DATABASEPROPERTY"或"IsFulltextEnabled"主题。

有关 ftcatid 的详细信息,请参阅"sp_help_fulltext_catalogs"、"OBJECTPROPERTY"或"TableFulltextCatalogId"SQL Server 联机丛书中的主题。

属性

文章编号: 240867 - 最后修改: 2007年11月30日 - 修订: 6.5
这篇文章中的信息适用于:
  • Microsoft SQL Server 2000 标准版?当用于
    • Microsoft SQL Server 2000 Developer Edition
    • Microsoft SQL Server 2000 标准版
    • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 7.0 Standard Edition
关键字:?
kbmt kbinfo KB240867 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 240867
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com