创建差分数据库备份(SQL Server)

适用范围:SQL Server

本文介绍如何使用 SQL Server Management Studio、Transact-SQL 或 PowerShell 在 SQL Server 中创建差分数据库备份。

关于备份概念和任务的概述,请参见备份概览(SQL Server)。

先决条件

差分数据库备份需要之前进行一次完整的数据库备份。 如果数据库没有备份,先做一次完整的数据库备份。 有关详细信息,请参阅 创建完整的数据库备份

建议

由于差分备份体积随时间增加,恢复差异备份会显著延长数据库恢复时间。 以固定时间间隔进行全新完整备份,建立新的差异基准。

例如,你可以每周备份一次完整数据库,然后在一周内进行每日差分备份。

Limitations

你不能在显式或隐式交易中使用该 BACKUP 语句。

权限

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

SQL Server 服务账户必须对备份设备的物理文件拥有读写权限。 该文件的所有权或权限问题会阻止备份和恢复操作,且仅在备份或恢复操作运行时出现。

例如, sp_addumpdevice 系统存储过程(向系统表添加备份设备条目) 并不验证文件访问

使用SQL Server Management Studio

  1. 在 对象资源管理器 中,连接到 数据库引擎,然后展开服务器树。

  2. 展开 数据库,然后选择一个用户数据库。 或者,展开 “系统数据库 ”并选择系统数据库。

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

  4. 数据库 下拉列表中,验证数据库名称。 可选地选择不同的数据库。

    你可以用任何 恢复模型 (完整、批量日志或简单)进行差分备份。

  5. 备份类型 下拉列表中,选择 差异

    重要

    选择了“差异”后,请验证是否清除了“仅复制备份”复选框。 你不能在仅复制的完整备份上创建差分备份。 有关详细信息,请参阅 仅复制备份

  6. 对于 备份组件,选择 数据库

  7. 名称 文本框中,接受默认备份设备名称或输入新名称。

  8. 可选地,在 描述 文本框中输入描述。

  9. 指定备份集的到期时间:

    • 要在特定天数后使备份组过期,选择 “之后 ”(默认设置),并输入天数。 值范围为 099999。 值为 0 时,备份集永不过期。

      默认值在服务器属性对话框的数据库设置页面的默认备份介质保留(以天为单位)选项中设置。 要打开它,请在对象资源管理器中右键点击服务器名称,选择属性,然后选择数据库设置页面。

    • 要在特定日期使备份集过期,选择 “开启”,并输入日期。

  10. 对于备份目的地,选择 磁盘URL。 要为单个媒体集添加最多64个磁盘驱动器,请选择 添加。 所选路径会出现在 “备份到 ”下拉列表中。

    若要移除备份目标,请选中该目标,然后选择移除。 要查看备份目标位置的内容,请选择该目标位置,然后选择 内容

    注意

    有关备份到 URL 的详细信息,请参阅 用于 Azure Blob 存储的 SQL Server URL 备份

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

  12. 覆盖介质中,选择以下选项之一:

    • 备份到现有媒体集

      选择“ 附加到现有备份集 ”或 覆盖所有现有备份集。 可选,选择 “检查媒体套装名称和备份套装过期 ”复选框,并在 “媒体套装名称” 文本框中输入名称。

      如果你没有指定名称,SQL Server会用空名创建媒体集。 如果你指定了一个名字,SQL Server会检查介质以确认名称是否匹配。

      如果将介质名称留空并选中该复选框,则只有当介质上的名称也为空时,检查才会成功。

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

      “新媒体套装”名称 文本框中输入一个名字。 可选地,在 “新媒体集描述 ”文本框中描述媒体集。

  13. 可靠性 部分,可选选择:

  14. SQL Server 支持 备份压缩。 默认情况下,SQL Server 会根据backup-compression default服务器配置选项压缩备份。 无论服务器层默认如何,选择压缩 备份 以压缩备份,或选择 不压缩备份 以防止压缩。

    若要查看当前备份压缩默认值,请参阅 服务器配置:备份压缩默认值。 关于备份压缩的更多信息,请参见备份压缩(SQL Server)。

注解

  • 你可以改为使用维护计划向导来创建差异数据库备份。

  • 交易日志部分的选项是非激活的,除非你备份了交易日志。 请在通用页面的备份类型部分指定此选项。

使用 Transact-SQL

执行该 BACKUP DATABASE 语句以创建差分数据库备份。 指定:

  • 要备份的数据库的名称。

  • 写入完整数据库备份的备份设备。

  • 那个 DIFFERENTIAL 条款只备份数据库中上次完整备份后发生变化的部分。

使用以下语法:

BACKUP DATABASE database_nameTO<backup_device>WITH DIFFERENTIAL

示例 (Transact-SQL)

本文中的代码示例使用 AdventureWorks2025AdventureWorksDW2025 示例数据库,可以从 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