应对由损坏的备份导致的 SQL Server 还原错误
更新日期: 2006 年 7 月 17 日
如果备份媒体损坏,将发生还原错误。还原错误可能会由操作系统报告或由校验和检测到。无论何种情况,您都有三种选择:
- 修复错误并重新启动还原操作。
- 忽略错误,继续还原操作,并在还原完成后修复数据库。
- 放弃还原操作,使用可避免损坏备份的备用还原计划。
注意: |
---|
媒体集或备份集必须包含最低限度的正确信息,才能被解释为 Microsoft 磁带格式。如果不是这样,RESTORE 将停止并指明备份的格式无效。 |
修复并重新启动还原操作
可以通过以下方式更正错误:
- 如果磁带设备发生错误,可卸下或更换磁带机。
- 对于磁盘设备,可以解决设备错误并替换损坏的文件。
- 如果媒体集已镜像,可以使用另一个镜像的相应媒体替换损坏的媒体。
忽略错误继续执行操作
注意: |
---|
在 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 选项将数据库置于紧急模式。
请参阅
概念
其他资源
ALTER DATABASE (Transact-SQL)
BACKUP (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
RESTORE (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 7 月 17 日 |
|