备份和还原全文目录

在此版本的 Microsoft SQL Server 中,可以使用 BACKUP 语句和 RESTORE 语句来备份和还原全文目录,其方式与备份和还原数据库文件数据相同。

若要备份全文目录,请使用 BACKUP 语句:

BACKUP DATABASE database_name
TO backup_device

每个全文目录均被当作一个文件处理,并将包括在已备份的数据库文件集中。在备份过程中,不会删除或添加全文目录。

通常情况下,SQL Server 会在 BACKUP 操作中执行下列任务:

  1. 暂时挂起 Microsoft Full-Text Engine for SQL Server (MSFTESQL) 服务,并将对全文目录所做的所有挂起的更改刷新到磁盘。此外,SQL Server 还会停止对目录的所有写活动,并在备份之初将所有尚未处理的更改排队到通知日志中,以便在备份完成后将这些更改提交给全文目录。
    磁盘上的目录状态保持不变。此时仍然可以查询该目录。
  2. 备份所有表、全文目录数据、更改跟踪日志以及元数据。
  3. 备份自开始备份以来事务日志中出现的所有数据。
  4. 恢复 MSFTESQL 服务并填充全文索引。

有关备份数据库数据的详细信息,请参阅创建 SQL Server 数据库的完整备份和差异备份。有关 Transact-SQL 中的 BACKUP 语句的详细信息,请参阅 BACKUP (Transact-SQL)

备份完全文目录之后,SQL Server 将启动 MSFTESQL 服务,提交通知日志中排队的更新,然后恢复正常操作。

除了对全文目录和数据库数据进行完整备份之外,还可以按下列方式备份全文目录:

  • 差异备份
    若要备份自上次完整备份以来对数据库数据和全文目录所做的更改,请在 BACKUP 命令中指定 WITH DIFFERENTIAL。

    例如,以下语句备份自上次完整备份以来对数据库数据(包括全文目录)所做的更改。

    BACKUP DATABASE database_name
    TO backup_device
    WITH DIFFERENTIAL
    

    只会备份自上次完整备份以来更改或添加的文件。如果自上次完整备份以来删除了某些文件,那么在还原过程中也会删除这些文件。在备份过程中发生的更改会被附加到通知日志,并进行备份,然后在备份完所有文件后提交这些更改。

    FAT32 文件系统不支持对全文目录进行差异备份。

  • 全文目录的文件备份
    若要只备份全文目录(而不备份数据库数据),请在 BACKUP 命令中指定 FILE 子句。

    例如,以下语句只备份全文目录 fulltext_cat

    BACKUP DATABASE database_name
    FILE = 'sysft_fulltext_cat'
    TO backup_device
    
    ms142511.note(zh-cn,SQL.90).gif注意:
    全文目录文件名是带有前缀“sys”的全文目录名称。

    若要只备份存储多个全文目录的文件组,请在 BACKUP 命令中指定 FILEGROUP 子句。

    例如,以下语句只备份文件组 fulltext_catFG

    BACKUP DATABASE database_name
    FILEGROUP = 'fulltext_catFG'
    TO backup_device
    
  • 全文目录的差异文件备份
    若要只备份对全文目录所做的更改,请在 BACKUP 命令中指定 FILE 子句和 WITH DIFFERENTIAL。

    例如,以下语句备份自上次完整备份以来对全文目录 fulltext_cat 所做的更改。

    BACKUP DATABASE database_name
    FILE = 'sysft_fulltext_cat'
    TO backup_device
    WITH DIFFERENTIAL
    

    若要只备份对存储在文件组中的所有全文目录所做的更改,请在 BACKUP 命令中指定 FILEGROUP 子句和 WITH DIFFERENTIAL。

    例如,以下语句备份自上次完整备份以来对存储在文件组 fulltext_catFG 中的所有全文目录所做的更改。

    BACKUP DATABASE database_name
    FILEGROUP = 'fulltext_catFG'
    TO backup_device
    WITH DIFFERENTIAL
    

若要还原全文目录,请使用 RESTORE 命令。

RESTORE DATABASE database_name
FROM backup_device

发出此命令后,将从备份数据(包括全文目录数据)所在的磁盘位置还原数据。

有关 Transact-SQL 中的 RESTORE 语句的详细信息,请参阅 RESTORE (Transact-SQL)

除了对全文目录和数据库数据进行完整还原之外,还可以按下列方式还原全文目录:

  • 还原到替代位置
    若要为全文目录的根路径指定替代位置,请在 RESTORE 命令中指定 WITH MOVE。

    例如,以下语句会将全文目录 fulltext_cat 还原到 F:\FtCat 目录中。

    RESTORE DATABASE AdventureWorks
    FROM backup_device
    WITH MOVE 'sysft_fulltext_cat' TO 'F:\FtCat'
    

    如果指定了 WITH MOVE,SQL Server 会用全文目录根路径的新位置来更新 sys.fulltext_catalogssys.databases_files 目录视图中全文目录的元数据。全文目录元数据与其他数据库和表数据文件按相同的方式同时更新。

    还可以指定 WITH MOVE,以便将差异备份以及全文目录文件或文件组备份还原到替代位置。

    ms142511.note(zh-cn,SQL.90).gif注意:
    不能将全文目录还原到根目录中。
  • 还原全文目录的差异备份
    若要还原全文目录和数据库数据的差异备份,请执行两步还原操作:先进行完整还原,再进行差异还原。第二步还原只更新在完全备份与差异备份之间改变过的数据库区。

    RESTORE DATABASE AdventureWorks
    FROM backup_device
    WITH NORECOVERY
    RESTORE DATABASE AdventureWorks
    FROM backup_device2
    FILE = 'sysft_fulltext_cat'
    

    在此方案中,数据库在两步还原操作之间将保持离线且 Microsoft Search 将停止运行。只有当第二步还原完成后,它们才会恢复在线。

    还可以还原文件和文件组的差异备份。

  • 还原全文目录的文件备份
    若要还原全文目录的文件备份和文件组备份,请在 RESTORE 命令中指定 FILE 或 FILEGROUP 子句。

    RESTORE DATABASE AdventureWorks
    FILE = 'sysft_fulltext_cat'
    FROM backup_device
    
    --or 
    RESTORE DATABASE AdventureWorks
    FILEGROUP = 'fulltext_catFG'
    FROM backup_device
    

    如果尝试将全文目录数据还原为旧版本的数据,SQL Server 会返回一条警告。

ms142511.note(zh-cn,SQL.90).gif注意:
在还原事务日志备份时,全文索引可能会处于不一致状态。若要使全文索引恢复为一致状态,需要执行一次完全爬网。

请参阅

概念

管理全文搜索

帮助和信息

获取 SQL Server 2005 帮助