如何在数据库损坏时备份事务日志 (Transact-SQL)

本主题说明当数据库损坏时如何备份事务日志。

创建当前活动的事务日志的备份

  1. 执行 BACKUP LOG 语句以备份当前活动的事务日志,同时指定:

    • 要备份的事务日志所属的数据库的名称。

    • 事务日志备份将写入的备份设备。

    • NO_TRUNCATE 子句。

      只要事务日志文件是可访问的并且没有损坏,那么即使数据库不可访问,该子句也允许备份事务日志的活动部分。

  2. 指定(可选):

    • INIT 子句,用于覆盖备份媒体,并将备份作为备份媒体上的第一个文件写入。如果没有现有的媒体标头,则会自动编写一个。

    • SKIP 和 INIT 子句,用于覆盖备份媒体,即使备份媒体上存在尚未过期的备份,或媒体名称与备份媒体上的名称不匹配,也会覆盖备份媒体。

    • FORMAT 子句,通过它可以在首次使用媒体时对备份媒体进行初始化,并重写任何现有的媒体标头。

      如果已经指定了 FORMAT 子句,则不需要指定 INIT 子句。

      重要说明重要提示

      使用 BACKUP 语句的 FORMAT 或 INIT 子句时要格外谨慎,因为稍有不慎便会破坏先前存储在备份媒体上的任何备份。

示例

重要说明重要提示

MyAdvWorks_FullRM 数据库是 AdventureWorks 的一个副本,它使用简单恢复模式。若要允许日志备份,请在完整备份数据库之前使用 ALTER DATABASE MyAdvWorks_FullRM SET RECOVERY FULL 将数据库设置为使用完整恢复模式。

以下示例将备份 MyAdvWorks_FullRM 数据库的当前活动事务日志,即使 MyAdvWorks_FullRM 已损坏且不可访问。但事务日志必须未损坏且可访问:

BACKUP LOG MyAdvWorks_FullRM
   TO MyAdvWorks_FullRM_log1
   WITH NO_TRUNCATE
GO