备份事务日志

适用范围:SQL Server

本文介绍了如何使用 SQL Server Management Studio、Azure Data Studio、Transact-SQL 或 PowerShell 在 SQL Server 中备份事务日志。

限制

不允许在显式事务或隐式事务中使用 BACKUP 语句。 显式事务就是可以显式地在其中定义事务的开始和结束的事务。

不支持 master 系统数据库的事务日志备份。

建议

如果数据库使用完整恢复模式或大容量日志恢复模式,则必须足够频繁地备份事务日志,以保护数据和避免事务日志变满。 这将截断日志,并且支持将数据库还原到特定时间点。

默认情况下,每个成功的备份操作都会在 SQL Server 错误日志和系统事件日志中添加一个条目。 如果频繁地备份日志,这些成功消息会迅速累积,从而产生巨大的错误日志,这样会使查找其他消息变得非常困难。 在这些情况下,如果任何脚本均不依赖于这些日志条目,则可以使用跟踪标志 3226 禁止这些条目,请参阅跟踪标志 (Transact-SQL)

权限

在开始之前,请首先检查是否拥有正确的实例级别和存储级别权限。

数据库引擎权限

默认情况下,为 sysadmin 固定服务器角色以及 db_owner 和 db_backupoperator 固定数据库角色的成员授予所需的 BACKUP DATABASEBACKUP LOG 权限

备份设备权限

备份设备的物理文件的所有权和权限问题可能会妨碍备份操作。 运行 SQL Server 服务的操作系统帐户必须具有设备的读写权限。 在因尝试备份或还原而访问物理资源之前,备份设备物理文件中的权限问题并不明显。

注意

用于在系统表中添加备份设备条目的 sp_addumpdevice 并不会检查文件访问权限。

使用 SQL Server Management Studio

注意

本节中的步骤也适用于 Azure Data Studio。

  1. 连接到 SQL Server 数据库引擎的相应实例后,在对象资源管理器中选择服务器名称以展开服务器树。

  2. 展开 “数据库”,然后根据数据库的不同,选择用户数据库,或展开 “系统数据库” ,再选择系统数据库。

  3. 右键单击数据库,指向“任务”,然后单击“备份”。 将出现 “备份数据库” 对话框。

  4. “数据库” 列表框中,验证数据库名称。 您也可以从列表中选择其他数据库。

  5. 验证恢复模式是 FULL 还是 BULK_LOGGED

  6. “备份类型” 列表框中,选择 “事务日志”

  7. (可选)选择“仅复制备份”以创建仅复制备份。 “仅复制备份”是独立于传统 SQL Server 备份顺序的 SQL Server 备份,详情请参阅 仅复制备份

    注意

    选择“差异”选项时,将无法创建仅复制备份。

  8. 可以接受 “名称” 文本框中建议的默认备份集名称,也可以为备份集输入其他名称。

  9. (可选)在“说明”文本框中,输入备份集的说明。

  10. 指定备份集的过期时间:

    • 要使备份集在特定天数后过期,请选择“之后”(默认选项),然后输入备份集从创建到过期将经过的天数。 此值范围为 0 到 99999 天;0 天表示备份集永不过期。

      默认值在 “服务器属性”对话框(位于 “数据库设置”页上)的 “默认备份媒体保持期(天)”选项中设置。 若要访问此对话框,请在对象资源管理器中右键单击服务器名称,选择“属性”,再选择 “数据库设置”页。

    • 要使备份集在特定日期过期,请选择“于”,然后输入备份集的过期日期。

  11. 通过选择“磁盘”、“URL” 或“磁带”,从而选择备份目的地的类型。 要选择包含单个媒体集的多个磁盘或磁带机(最多为 64 个)的路径,请选择“添加”。 选择的路径将显示在 “备份到” 列表框中。

    若要删除备份目标,请依次选择目标和“删除”。 要查看现有备份目的地的内容,请依次选择该目的地和“内容”

  12. 要查看或选择高级选项,请在“选择页”窗格中选择“选项”

  13. 可以通过选择下面的任意一个选项,从而选择“覆盖媒体”选项:

    • 备份到现有介质集

      对于此选项,请选择“追加到现有备份集”或“覆盖所有现有备份集”,详情请参阅 媒体集、媒体簇和备份集 (SQL Server)

      • (可选)选择“检查媒体集名称和备份集的过期日期”,以使备份操作对媒体集和备份集的过期日期和时间进行验证。

      • (可选)在“媒体集名称”文本框中输入名称。 如果没有指定名称,将使用空白名称创建介质集。 如果指定了介质集名称,将检查介质(磁带或磁盘),以确定实际名称是否与此处输入的名称匹配。

      如果将媒体名称保留空白,并选中该框以便与媒体进行核对,则只有当媒体上的媒体名称也是空白时才能成功。

    • 备份到新介质集并清除所有现有备份集

      对于该选项,请在“新媒体集名称”文本框中输入名称,并在“新媒体集说明”文本框中描述媒体集(可选),请参阅媒体集、媒体簇和备份集 (SQL Server)

  14. 或者,在 “可靠性” 部分中,选中:

  15. “事务日志” 区域中:

    • 对于例行的日志备份,请保留默认选项 “通过删除不活动的条目截断事务日志”

    • 若要备份日志尾部(即活动的日志),请选中“备份日志尾部,并使数据库处于还原状态”

      备份日志尾部失败后执行结尾日志备份,以防丢失所做的工作。 在失败之后且在开始还原数据库之前,或者在故障转移到辅助数据库时,备份活动日志(结尾日志备份)。 选择此选项等效于在 Transact-SQL BACKUP LOG 语句中指定 NORECOVERY 选项。

      有关结尾日志备份的详细信息,请参阅 结尾日志备份 (SQL Server)

  16. 如果备份到磁带驱动器(如“常规”页的“目的地”部分所指定),则“备份后卸载磁带”选项处于活动状态。 选择此选项将激活“卸载前倒带”选项。

  17. 默认情况下,是否压缩备份取决于“backup-compression default”服务器配置选项的值。 但是,无论当前服务器级的默认设置如何,都可以通过选中“压缩备份”来压缩备份,并且可以通过选中“不压缩备份”来防止压缩备份。

    SQL Server 2008 (10.0.x) Enterprise 及更高版本以及 SQL Server 2016 (13.x) Standard Service Pack 1 及更高版本都支持备份压缩

    要查看当前 backup compression default 设置,请参阅 查看或配置 backup compression default(服务器配置选项)

    要加密备份文件,请选中“加密备份”复选框。 选择要用于加密备份文件的加密算法,并提供一个证书或非对称密钥。 可用于加密的算法是:

    • AES 128
    • AES 192
    • AES 256
    • 三重 DES

使用 Transact-SQL

执行 BACKUP LOG 语句以备份事务日志,同时提供下列信息:

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

重要

此示例使用 AdventureWorks2022 数据库,该数据库使用简单恢复模式。 若要允许日志备份,请在完整备份数据库之前,将数据库设置为使用完整恢复模式。

有关详细信息,请参阅 查看或更改数据库的恢复模式 (SQL Server)

以下示例将在以前创建的已命名备份设备 AdventureWorks2022 上创建 MyAdvWorks_FullRM_log1数据库的事务日志备份。

BACKUP LOG AdventureWorks2022
   TO MyAdvWorks_FullRM_log1;
GO

使用 PowerShell

设置和使用 SQL Server PowerShell 提供程序。 使用 Backup-SqlDatabase cmdlet 并为 -BackupAction 参数的值指定 Log

下面的示例在服务器实例 <myDatabase> 的默认备份位置创建数据库 Computer\Instance的日志备份。

Backup-SqlDatabase -ServerInstance Computer\Instance -Database <myDatabase> -BackupAction Log