适用范围:SQL Server
本文介绍如何使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 在 SQL Server 中创建差分数据库备份。
关于备份概念和任务的概述,请参见备份概览(SQL Server)。
先决条件
差分数据库备份需要之前进行一次完整的数据库备份。 如果数据库没有备份,先做一次完整的数据库备份。 有关详细信息,请参阅 创建完整的数据库备份。
建议
由于差分备份体积随时间增加,恢复差异备份会显著延长数据库恢复时间。 以固定时间间隔进行全新完整备份,建立新的差异基准。
例如,你可以每周备份一次完整数据库,然后在一周内进行每日差分备份。
Limitations
你不能在显式或隐式交易中使用该 BACKUP 语句。
权限
默认情况下,为 sysadmin 固定服务器角色以及 db_owner 和 db_backupoperator 固定数据库角色的成员授予 BACKUP DATABASE 和 BACKUP LOG 权限。
SQL Server 服务账户必须对备份设备的物理文件拥有读写权限。 该文件的所有权或权限问题会阻止备份和恢复操作,且仅在备份或恢复操作运行时出现。
例如, sp_addumpdevice 系统存储过程(向系统表添加备份设备条目) 并不验证文件访问 。
使用SQL Server Management Studio
在 对象资源管理器 中,连接到 数据库引擎,然后展开服务器树。
展开 数据库,然后选择一个用户数据库。 或者,展开 “系统数据库 ”并选择系统数据库。
右键单击数据库,指向“任务”,然后单击“备份”。 将出现 “备份数据库” 对话框。
在 数据库 下拉列表中,验证数据库名称。 可选地选择不同的数据库。
你可以用任何 恢复模型 (完整、批量日志或简单)进行差分备份。
在 备份类型 下拉列表中,选择 差异。
重要
选择了“差异”后,请验证是否清除了“仅复制备份”复选框。 你不能在仅复制的完整备份上创建差分备份。 有关详细信息,请参阅 仅复制备份。
对于 备份组件,选择 数据库。
在 名称 文本框中,接受默认备份设备名称或输入新名称。
可选地,在 描述 文本框中输入描述。
指定备份集的到期时间:
要在特定天数后使备份组过期,选择 “之后 ”(默认设置),并输入天数。 值范围为
0到99999。 值为0时,备份集永不过期。默认值在服务器属性对话框的数据库设置页面的默认备份介质保留(以天为单位)选项中设置。 要打开它,请在对象资源管理器中右键点击服务器名称,选择属性,然后选择数据库设置页面。
要在特定日期使备份集过期,选择 “开启”,并输入日期。
对于备份目的地,选择 磁盘 或 URL。 要为单个媒体集添加最多64个磁盘驱动器,请选择 添加。 所选路径会出现在 “备份到 ”下拉列表中。
若要移除备份目标,请选中该目标,然后选择移除。 要查看备份目标位置的内容,请选择该目标位置,然后选择 内容。
注意
有关备份到 URL 的详细信息,请参阅 用于 Azure Blob 存储的 SQL Server URL 备份。
要查看或选择高级选项,请在“选择页”窗格中选择“选项”。
在覆盖介质中,选择以下选项之一:
备份到现有媒体集
选择“ 附加到现有备份集 ”或 覆盖所有现有备份集。 可选,选择 “检查媒体套装名称和备份套装过期 ”复选框,并在 “媒体套装名称” 文本框中输入名称。
如果你没有指定名称,SQL Server会用空名创建媒体集。 如果你指定了一个名字,SQL Server会检查介质以确认名称是否匹配。
如果将介质名称留空并选中该复选框,则只有当介质上的名称也为空时,检查才会成功。
备份到新介质集并清除所有现有备份集
在 “新媒体套装”名称 文本框中输入一个名字。 可选地,在 “新媒体集描述 ”文本框中描述媒体集。
在 可靠性 部分,可选选择:
完成后验证备份。
在写入介质前执行校验和检查,并可选地在校验和错误时继续。 有关校验和的信息,请参阅在备份和还原期间可能的媒体错误 (SQL Server)。
SQL Server 支持 备份压缩。 默认情况下,SQL Server 会根据
backup-compression default服务器配置选项压缩备份。 无论服务器层默认如何,选择压缩 备份 以压缩备份,或选择 不压缩备份 以防止压缩。若要查看当前备份压缩默认值,请参阅 服务器配置:备份压缩默认值。 关于备份压缩的更多信息,请参见备份压缩(SQL Server)。
注解
你可以改为使用维护计划向导来创建差异数据库备份。
交易日志部分的选项是非激活的,除非你备份了交易日志。 请在通用页面的备份类型部分指定此选项。
使用 Transact-SQL
执行该 BACKUP DATABASE 语句以创建差分数据库备份。 指定:
要备份的数据库的名称。
写入完整数据库备份的备份设备。
那个
DIFFERENTIAL条款只备份数据库中上次完整备份后发生变化的部分。
使用以下语法:
BACKUP DATABASE
database_nameTO<backup_device>WITH DIFFERENTIAL
示例 (Transact-SQL)
本文中的代码示例使用 AdventureWorks2025 或 AdventureWorksDW2025 示例数据库,可以从 Microsoft SQL Server 示例和社区项目 主页下载该数据库。
-- Create a full database backup first.
BACKUP DATABASE AdventureWorks2025
TO AdventureWorks2025_1
WITH INIT;
GO
-- Time elapses.
-- Create a differential database backup, appending the backup
-- to the backup device containing the full database backup.
BACKUP DATABASE AdventureWorks2025
TO AdventureWorks2025_1
WITH DIFFERENTIAL;
GO
注解
有关备份到磁带的信息,请参阅BACKUP创建完整数据库备份中的磁带选项和备份到磁带设备示例。
注意
TAPE 选项将在SQL Server的未来版本中删除。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
使用 PowerShell
使用 Backup-SqlDatabase 命令。 要指定差异数据库备份,请将 -Incremental 参数与 -BackupAction Database 结合使用。
注意
本例需要该 SqlServer 模块。 有关详细信息,请参阅 SQL Server PowerShell Provider。
示例 (PowerShell)
以下示例为数据库 Computer\Instance 创建差异数据库备份,并将其备份到服务器实例 AdventureWorks2025 的默认备份位置。 必须已经有完整的数据库备份。
有关完整语法示例,请参阅 Backup-SqlDatabase。
$credential = Get-Credential
Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database AdventureWorks2025 -BackupAction Database -Incremental -Credential $credential