应对由损坏的备份导致的 SQL Server 还原错误

更新日期: 2006 年 7 月 17 日

如果备份媒体损坏,将发生还原错误。还原错误可能会由操作系统报告或由校验和检测到。无论何种情况,您都有三种选择:

  • 修复错误并重新启动还原操作。
  • 忽略错误,继续还原操作,并在还原完成后修复数据库。
  • 放弃还原操作,使用可避免损坏备份的备用还原计划。
ms190952.note(zh-cn,SQL.90).gif注意:
媒体集或备份集必须包含最低限度的正确信息,才能被解释为 Microsoft 磁带格式。如果不是这样,RESTORE 将停止并指明备份的格式无效。

修复并重新启动还原操作

可以通过以下方式更正错误:

  • 如果磁带设备发生错误,可卸下或更换磁带机。
  • 对于磁盘设备,可以解决设备错误并替换损坏的文件。
  • 如果媒体集已镜像,可以使用另一个镜像的相应媒体替换损坏的媒体。

忽略错误继续执行操作

ms190952.Caution(zh-cn,SQL.90).gif注意:
在 RESTORE 语句中指定 WITH CONTINUE_AFTER_ERROR 将尝试还原数据库。但是,有许多种损坏会阻止恢复数据库。极力建议您尽量避免使用 CONTINUE_AFTER_ERROR 选项,除非已经尝试了所有替代方法但仍无效。

CONTINUE_AFTER_ERROR 选项将使还原操作跳过错误继续进行,并还原所能还原的内容。将发生前滚,您可以应用后续事务日志备份。如果前滚遇到的错误阻止前滚到达目标时点,此错误将指示在日志中。在恢复点,数据库将在可能的情况下联机。但如果无法完成恢复,数据库将保持离线状态。

数据丢失量取决于遇到的错误。例如,页中的错误校验和仅能引起该页受到置疑,但会继续读取和处理媒体。相反,磁带设备报告的 I/O 错误可能会阻止还原忽略错误进行读取,并阻止还原磁带的其余部分。

当出现错误后指示继续还原时,未通过验证的页将被写入磁盘并记录到 suspect_pages 表和错误日志中。

**最佳方法:**使用 WITH CONTINUE_AFTER_ERROR 还原数据后,请检查错误日志了解有关错误的详细信息。另外,请保存并分析直接从 RESTORE 语句获取的所有消息。

忽略错误继续

  • 基本的 RESTORE 语法为:
  • RESTORE DATABASE database_name FROM backup_device WITH CONTINUE_AFTER_ERROR, [ NORECOVERY ]

管理离线数据库

您可以在忽略错误继续执行的还原顺序结束时使用 DBCC CHECKDB 修复数据库。要使 CHECKDB 在使用 RESTORE CONTINUE_AFTER_ERROR 后以最大的一致性运行,建议您在 DBCC CHECKDB 命令中使用 WITH TABLOCK 选项。有关详细信息,请参阅 DBCC CHECKDB (Transact-SQL)。所有修复选项都可用。若要了解所需的最低修复级别,请在不使用修复选项的情况下运行 DBCC CHECKDB。请注意,在极个别情况下,可能没有足够的信息来修复数据库。

若要获得按原样访问数据的有限权限,您可以使用 ALTER DATABASE 命令的 EMERGENCY 选项将数据库置于紧急模式。

请参阅

概念

了解和管理 suspect_pages 表

其他资源

ALTER DATABASE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
RESTORE (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

新增内容:
  • 在“忽略错误继续”一节中添加了注意说明和最佳方法。