备份和还原全文目录
在此版本的 Microsoft SQL Server 中,可以使用 BACKUP 语句和 RESTORE 语句来备份和还原全文目录,其方式与备份和还原数据库文件数据相同。
若要备份全文目录,请使用 BACKUP 语句:
BACKUP DATABASE database_name
TO backup_device
每个全文目录均被当作一个文件处理,并将包括在已备份的数据库文件集中。在备份过程中,不会删除或添加全文目录。
通常情况下,SQL Server 会在 BACKUP 操作中执行下列任务:
- 暂时挂起 Microsoft Full-Text Engine for SQL Server (MSFTESQL) 服务,并将对全文目录所做的所有挂起的更改刷新到磁盘。此外,SQL Server 还会停止对目录的所有写活动,并在备份之初将所有尚未处理的更改排队到通知日志中,以便在备份完成后将这些更改提交给全文目录。
磁盘上的目录状态保持不变。此时仍然可以查询该目录。 - 备份所有表、全文目录数据、更改跟踪日志以及元数据。
- 备份自开始备份以来事务日志中出现的所有数据。
- 恢复 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
注意: 全文目录文件名是带有前缀“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_catalogs 和 sys.databases_files 目录视图中全文目录的元数据。全文目录元数据与其他数据库和表数据文件按相同的方式同时更新。
还可以指定 WITH MOVE,以便将差异备份以及全文目录文件或文件组备份还原到替代位置。
注意: 不能将全文目录还原到根目录中。
还原全文目录的差异备份
若要还原全文目录和数据库数据的差异备份,请执行两步还原操作:先进行完整还原,再进行差异还原。第二步还原只更新在完全备份与差异备份之间改变过的数据库区。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 会返回一条警告。
注意: |
---|
在还原事务日志备份时,全文索引可能会处于不一致状态。若要使全文索引恢复为一致状态,需要执行一次完全爬网。 |