备份事务日志
适用范围: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 DATABASE
和 BACKUP LOG
权限。
备份设备权限
备份设备的物理文件的所有权和权限问题可能会妨碍备份操作。 运行 SQL Server 服务的操作系统帐户必须具有设备的读写权限。 在因尝试备份或还原而访问物理资源之前,备份设备物理文件中的权限问题并不明显。
注意
用于在系统表中添加备份设备条目的 sp_addumpdevice 并不会检查文件访问权限。
使用 SQL Server Management Studio
注意
本节中的步骤也适用于 Azure Data Studio。
连接到 SQL Server 数据库引擎的相应实例后,在对象资源管理器中选择服务器名称以展开服务器树。
展开 “数据库”,然后根据数据库的不同,选择用户数据库,或展开 “系统数据库” ,再选择系统数据库。
右键单击数据库,指向“任务”,然后单击“备份”。 将出现 “备份数据库” 对话框。
在 “数据库” 列表框中,验证数据库名称。 您也可以从列表中选择其他数据库。
验证恢复模式是 FULL 还是 BULK_LOGGED。
在 “备份类型” 列表框中,选择 “事务日志”。
(可选)选择“仅复制备份”以创建仅复制备份。 “仅复制备份”是独立于传统 SQL Server 备份顺序的 SQL Server 备份,详情请参阅 仅复制备份。
注意
选择“差异”选项时,将无法创建仅复制备份。
可以接受 “名称” 文本框中建议的默认备份集名称,也可以为备份集输入其他名称。
(可选)在“说明”文本框中,输入备份集的说明。
指定备份集的过期时间:
要使备份集在特定天数后过期,请选择“之后”(默认选项),然后输入备份集从创建到过期将经过的天数。 此值范围为 0 到 99999 天;0 天表示备份集永不过期。
默认值在 “服务器属性”对话框(位于 “数据库设置”页上)的 “默认备份媒体保持期(天)”选项中设置。 若要访问此对话框,请在对象资源管理器中右键单击服务器名称,选择“属性”,再选择 “数据库设置”页。
要使备份集在特定日期过期,请选择“于”,然后输入备份集的过期日期。
通过选择“磁盘”、“URL” 或“磁带”,从而选择备份目的地的类型。 要选择包含单个媒体集的多个磁盘或磁带机(最多为 64 个)的路径,请选择“添加”。 选择的路径将显示在 “备份到” 列表框中。
若要删除备份目标,请依次选择目标和“删除”。 要查看现有备份目的地的内容,请依次选择该目的地和“内容”。
要查看或选择高级选项,请在“选择页”窗格中选择“选项”。
可以通过选择下面的任意一个选项,从而选择“覆盖媒体”选项:
备份到现有介质集
对于此选项,请选择“追加到现有备份集”或“覆盖所有现有备份集”,详情请参阅 媒体集、媒体簇和备份集 (SQL Server)。
(可选)选择“检查媒体集名称和备份集的过期日期”,以使备份操作对媒体集和备份集的过期日期和时间进行验证。
(可选)在“媒体集名称”文本框中输入名称。 如果没有指定名称,将使用空白名称创建介质集。 如果指定了介质集名称,将检查介质(磁带或磁盘),以确定实际名称是否与此处输入的名称匹配。
如果将媒体名称保留空白,并选中该框以便与媒体进行核对,则只有当媒体上的媒体名称也是空白时才能成功。
备份到新介质集并清除所有现有备份集
对于该选项,请在“新媒体集名称”文本框中输入名称,并在“新媒体集说明”文本框中描述媒体集(可选),请参阅媒体集、媒体簇和备份集 (SQL Server)。
或者,在 “可靠性” 部分中,选中:
完成后验证备份。
“写入媒体前检查校验”和(可选)“出现校验和错误时继续”。
有关校验和的信息,请参阅在备份和还原期间可能出现的媒体错误 (SQL Server)。
在 “事务日志” 区域中:
对于例行的日志备份,请保留默认选项 “通过删除不活动的条目截断事务日志”。
若要备份日志尾部(即活动的日志),请选中“备份日志尾部,并使数据库处于还原状态”。
备份日志尾部失败后执行结尾日志备份,以防丢失所做的工作。 在失败之后且在开始还原数据库之前,或者在故障转移到辅助数据库时,备份活动日志(结尾日志备份)。 选择此选项等效于在 Transact-SQL BACKUP LOG 语句中指定 NORECOVERY 选项。
有关结尾日志备份的详细信息,请参阅 结尾日志备份 (SQL Server)。
如果备份到磁带驱动器(如“常规”页的“目的地”部分所指定),则“备份后卸载磁带”选项处于活动状态。 选择此选项将激活“卸载前倒带”选项。
默认情况下,是否压缩备份取决于“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