SQL Server备份恢复系列

1    723    3

Tags:

👉 本文共约31611个字,系统预计阅读时间或需119分钟。

目录

备份恢复概述

为何备份?

  • 备份 SQL Server 数据库、在备份上运行测试还原过程以及在另一个安全位置存储备份副本可防止可能的灾难性数据丢失。 备份是保护数据的唯一方法 。

    使用有效的数据库备份,可从多种故障中恢复数据,例如:

    • 介质故障。
    • 用户错误(例如,误删除了某个表)。
    • 硬件故障(例如,磁盘驱动器损坏或服务器报废)。
    • 自然灾难。 通过使用 SQL Server 备份到 Azure Blob 存储服务,可以在本地位置之外的其他区域创建一个站外备份,这样在发生影响本地位置的自然灾难时仍可以使用数据库。
  • 此外,数据库备份对于进行日常管理(如将数据库从一台服务器复制到另一台服务器、设置 Always On 可用性组 或数据库镜像以及进行存档)非常有用。

术语

备份 [动词] (back up)
从 SQL Server 数据库或其事务日志中将数据或日志记录复制到备份设备(如磁盘),以创建数据备份或日志备份。

备份 [名词] (backup)
可用于在失败后还原或恢复数据的 SQL Server 数据副本。 在数据库级别以及针对数据库的一个或多个文件或文件组创建 SQL Server 数据的备份。 不能创建表级备份。 除了数据备份之外,完整恢复模式要求创建事务日志的备份。

恢复模式
用于控制数据库上的事务日志维护的数据库属性。 有三种恢复模式:简单恢复模式完整恢复模式大容量日志恢复模式。 数据库的恢复模式确定其备份和还原要求。

还原 (restore)
一种包括多个阶段的过程,用于将指定 SQL Server 备份中的所有数据和日志页复制到指定数据库,然后通过应用记录的更改使该数据在时间上向前移动,以前滚备份中记录的所有事务。

备份类型

常用的数据备份方式有完全备份、差异备份以及增量备份。

  • 完全备份(Full Backup):备份全部选中的文件夹,并不依赖文件的存档属性来确定备份哪些文件。在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份。换言之,清除存档属性。完全备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应用中就是用一盘磁带对整个系统进行完全备份,包括其中的系统和所有数据。这种备份方式最大的好处就是只要用一盘磁带,就可以恢复丢失的数据。因此大大加快了系统或数据的恢复时间。

  • 差异备份(Differential Backup):备份自上一次完全备份之后有变化的数据。差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,也即备份后不标记为已备份文件。换言之,不清除存档属性。差异备份是指在一次全备份后到进行差异备份的这段时间内,对那些增加或者修改文件的备份。在进行恢复时,我们只需对第一次全备份和最后一次差异备份进行恢复。差异备份在避免了另外两种备份策略缺陷的同时,又具备了它们各自的优点。首先,它具有了增量备份需要时间短、节省磁盘空间的优势;其次,它又具有了全备份恢复所需磁带少、恢复时间短的特点。系统管理员只需要两盘磁带,即全备份磁带与灾难发生前一天的差异备份磁带,就可以将系统恢复。

  • 增量备份 (Incremental Backup ):备份自上一次备份(包含完全备份、差异备份、增量备份)之后有变化的数据。增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,既:备份后标记文件,换言之,清除存档属性。增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加和者被修改的文件。这就意味着,第一次增量备份的对象是进行全备份后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推。这种备份方式最显著的优点就是:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。

仅复制备份 (copy-only backup)
独立于正常 SQL Server 备份序列的特殊用途备份。

数据备份 (data backup)
完整数据库的数据备份(数据库备份)、部分数据库的数据备份(部分备份)或一组数据文件或文件组的数据备份(文件备份)。

数据库备份 (database backup)
数据库的备份。 完整数据库备份表示备份完成时的整个数据库。 差异数据库备份只包含自最近完整备份以来对数据库所做的更改。

差异备份 (differential backup)
基于完整数据库或部分数据库以及一组数据文件或文件组的最新完整备份的数据备份(差异基准),仅包含自差异基准以来发生了更改的数据区。

部分差异备份仅记录自上一次部分备份(称为“差异基准”)以来文件组中发生更改的数据区。

完整备份 (full backup)
一种数据备份,包含特定数据库或者一组特定的文件组或文件中的所有数据,以及可以恢复这些数据的足够的日志。

日志备份 (log backup)
包括以前日志备份中未备份的所有日志记录的事务日志备份。 (完整恢复模式)

文件备份 (file backup)
一个或多个数据库文件或文件组的备份。

部分备份 (partial backup)
仅包含数据库中部分文件组的数据(包含主要文件组、每个读/写文件组以及任何可选指定的只读文件中的数据)。

差异备份与增量备份的区别

通过上面的概念分析可以知道,差异备份与增量备份的区别在于它们备份的参考点不同:增量备份的参考点是上一次完全备份、差异备份或增量备份,差异备份的参考点是上一次完全备份。

下图展示了差异备份与增量备份的区别,其中Differential为差异备份,Incremental为增量备份:

img

备份介质术语和定义

备份设备 (backup device)
要将 SQL Server 备份写入其中以及可从其中还原的磁盘或磁带设备。 SQL Server 备份也可以写入 Azure Blob 存储服务,并且使用 URL 格式来指定备份文件的目标和名称。 有关详细信息,请参阅使用 Microsoft Azure Blob 存储服务执行 SQL Server 备份和还原

备份介质
已写入一个或多个备份的一个或多个磁带或磁盘文件。

备份集 (backup set)
通过成功的备份操作添加到介质组的备份内容。

介质簇 (media family)
在介质集中的单个非镜像设备或一组镜像设备上创建的备份。

介质集 (media set)
备份介质(磁带或磁盘文件)的有序集合,使用固定类型和数量的备份设备向其写入了一个或多个备份操作。

镜像介质集 (mirrored media set)
介质集的多个副本(镜像)。

备份压缩

SQL Server 2008 Enterprise 及更高版本支持压缩备份,并且 SQL Server 2008 及更高版本可以还原压缩后的备份。 有关详细信息,请参阅备份压缩 (SQL Server)

备份操作限制

可以在数据库在线并且正在使用时进行备份。 但是,存在下列限制:

无法备份脱机数据

隐式或显式引用脱机数据的任何备份操作都会失败。 一些典型示例包括:

  • 您请求完整数据库备份,但是数据库的一个文件组脱机。 由于所有文件组都隐式包含在完整数据库备份中,因此,此操作将会失败。

    若要备份此数据库,可以使用文件备份并仅指定联机的文件组。

  • 请求部分备份,但是有一个读/写文件组处于脱机状态。 由于部分备份需要使用所有读/写文件组,因此该操作失败。

  • 请求特定文件的文件备份,但是其中有一个文件处于脱机状态。 该操作失败。 若要备份联机文件,可以省略文件列表中的脱机文件并重复该操作。

通常,即使一个或多个数据文件不可用,日志备份也会成功。 但如果某个文件包含大容量日志恢复模式下所做的大容量日志更改,则所有文件都必须都处于联机状态才能成功备份。

并发限制

SQL Server 可以使用联机备份过程来备份数据库。 在备份过程中,可以进行多个操作;例如:在执行备份操作期间允许使用 INSERT、UPDATE 或 DELETE 语句。 但是,如果在正在创建或删除数据库文件时尝试启动备份操作,则备份操作将等待,直到创建或删除操作完成或者备份超时。

在数据库备份或事务日志备份的过程中无法执行的操作包括:

  • 文件管理操作,如含有 ADD FILE 或 REMOVE FILE 选项的 ALTER DATABASE 语句。
  • 收缩数据库或文件操作。 这包括自动收缩操作。
  • 如果在进行备份操作时尝试创建或删除数据库文件,则创建或删除操作将失败。

如果备份操作与文件管理操作或收缩操作重叠,则产生冲突。 无论哪个冲突操作首先开始,第二个操作总会等待第一个操作设置的锁超时。(超时期限由会话超时设置控制。)如果在超时期限内释放锁,第二个操作将继续执行。 如果锁超时,则第二个操作失败。

参考

https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/full-database-backups-sql-server

https://docs.microsoft.com/zh-cn/sql/relational-databases/backup-restore/backup-overview-sql-server?view=sql-server-ver15

快速入门:本地备份和还原 SQL Server 数据库

创建测试数据库

  1. 启动 SQL Server Management Studio (SSMS) 并连接到 SQL Server 实例。
  2. 打开“新建查询”窗口。
  3. 运行以下 TRANSACT-SQL (T-SQL) 代码来创建测试数据库。 刷新对象资源管理器中的“数据库”节点,查看新数据库 。

SQL复制

进行备份

要备份数据库,请执行以下操作:

  1. 启动 SQL Server Management Studio (SSMS) 并连接到 SQL Server 实例。
  2. 在对象资源管理器中,展开“数据库”节点 。
  3. 右键单击数据库,将鼠标悬停在“任务”上,然后选择“备份...” 。
  4. 在“目标”下,确认备份路径正确。 如需更改它,请选择“删除”以删除现有路径,然后选择“添加”来键入新路径 。 可通过省略号导航到特定文件。
  5. 选择“确定”以备份数据库。

执行 SQL 备份

或者,可运行以下 Transact-SQL 命令来备份数据库:

SQL复制

还原备份

要还原数据库,请执行以下操作:

  1. 启动 SQL Server Management Studio (SSMS) 并连接到 SQL Server 实例。

  2. 在对象资源管理器中右键单击“数据库”节点,然后选择“还原数据库...” 。

    还原数据库

  3. 选择“设备:”,然后选择省略号 (...) 来查找备份文件。

  4. 选择“添加”,然后导航到 .bak 文件所在的位置。 选择 .bak 文件,然后选择“确定”。

  5. 选择“确定”,关闭“选择备份设备”对话框 。

  6. 选择“确定”以还原数据库备份。

    还原数据库

或者,可运行以下 Transact-SQL 脚本来还原数据库:

SQL复制

清理资源

运行以下 Transact-SQL 命令来删除所创建的数据库及其在 MSDB 数据库中的备份历史记录:

SQL复制

完整数据库备份 (SQL Server)

适用于: SQL Server(所有支持的版本)

完整数据库备份可对整个数据库进行备份。 这包括对部分事务日志进行备份,以便在还原完整数据库备份之后,能够恢复完整数据库备份。 完整数据库备份表示备份完成时的数据库。

提示

随着数据库不断增大,完整备份需花费更多时间才能完成,并且需要更多的存储空间。 因此,对于大型数据库而言,您可以用一系列“差异数据库备份” 来补充完整数据库备份。 有关详细信息,请参阅 差异备份 (SQL Server)

重要

针对数据库备份,TRUSTWORTHY 设置为 OFF。 有关如何将 TRUSTWORTHY 设置为 ON 的详细信息,请参阅 ALTER DATABASE SET 选项 (Transact-SQL)

简单恢复模式下的数据库备份

在简单恢复模式下,每次备份后,如果出现严重故障,数据库将有可能丢失工作。 每次更新都会增加丢失工作的风险,这种情况将一直持续到下一次备份。这时,工作丢失风险将变为零,并开始新一轮的工作丢失风险。 备份之间的工作丢失风险随着时间的推移而增加。 下图显示了仅使用完整数据库备份的备份策略的工作丢失风险。

示例 (Transact-SQL)

下面的示例说明了如何使用 WITH FORMAT 覆盖任意现有备份并创建新介质集,从而创建一个完整数据库备份。

完整恢复模式下的数据库备份

对于使用完整恢复模式和大容量日志恢复模式的数据库而言,数据库备份是必需的,但并不足够。 还需要事务日志备份。 下图显示了在完整恢复模式下可以使用的复杂性最小的备份策略。

一系列完整数据库备份和日志备份

有关如何创建日志备份的信息,请参阅事务日志备份 (SQL Server)

示例 (Transact-SQL)

下面的示例说明了如何使用 WITH FORMAT 覆盖任意现有备份并创建新介质集,从而创建一个完整数据库备份。 然后,此示例将备份事务日志。 在现实情况下,您必须执行一系列的定期日志备份。 在此示例中, AdventureWorks2012 示例数据库设置为使用完整恢复模式。

使用完整数据库备份还原数据库

您可以通过将数据库从完整数据库备份还原到任意位置的方法一步完成整个数据库的重新创建。 备份中包含了足够的事务日志,这使您能够将数据库恢复到备份完成的时间。 还原的数据库将与还原数据库备份完成时的原始数据库状态相符,但不包含任何未提交的事务。 在完整恢复模式下,随后应还原所有后续日志备份。 恢复数据库后,将回滚未提交的事务。

差异备份 (SQL Server)

适用于: SQL Server(所有支持的版本)

此备份和还原主题与所有 SQL Server 数据库相关。

差异备份基于最新的、以前的完整数据备份。 差异备份仅捕获自该次完整备份后发生更改的数据。 差异备份所基于的完整备份称为差异的“基准” 。 完整备份(仅复制备份除外)可以用作一系列差异备份的基准,包括数据库备份、部分备份和文件备份。 文件差异备份的基准备份可以包含在完整备份、文件备份或部分备份中。

优势

  • 与创建完整备份相比,创建差异备份的速度可能非常快。 差异备份只记录自差异备份所基于的完整备份后更改的数据。 这有助于频繁地进行数据备份,减少数据丢失的风险。 但是,在还原差异备份之前,必须先还原其基准。 因此,从差异备份进行还原必然要比从完整备份进行还原需要更多的步骤和时间,因为这需要两个备份文件。
  • 如果数据库的某个子集比该数据库的其余部分修改得更为频繁,则差异数据库备份特别有用。 在这些情况下,使用差异数据库备份,您可以频繁执行备份,并且不会产生完整数据库备份的开销。
  • 在完整恢复模式下,使用差异备份可以减少必须还原的日志备份的数量。

差异备份概述

差异备份捕获在创建差异基准和创建差异备份之间发生更改的任何 盘区 (物理上连续的八个页的集合)的状态。 这意味着,给定差异备份的大小取决于自建立差异基准后更改的数据量。 通常,差异基准越旧,新的差异备份就越大。 在一系列差异备份中,频繁更新的区可能在每个差异备份中包含不同的数据。

下图显示的是差异备份的工作原理。 该图显示了二十四个数据区,其中的六个已发生更改。 差异备份只包含这六个数据区。 差异备份操作取决于位图页,此页针对每个区包含一位。 对于自建立差异基准后更新的每个区,该位在位图中设置为 1。

差异位图标识更改的区

备注

仅复制备份不能更新差异位图。 因此,仅复制备份不会影响后续差异备份。

在建立基准之后立即执行的差异备份通常明显小于差异基准。 这可以节省存储空间和备份时间。 但是,当数据库随着时间的推移发生更改时,数据库与特定差异基准之间的差异将增大。 差异备份与其基准间隔的时间越长,差异备份可能就越大。 这意味着差异备份的大小最终会接近差异基准的大小。 较大的差异备份将失去备份更快、更小的优势。

当差异备份的大小增大时,还原差异备份会显著延长还原数据库所需的时间。 因此,建议按设定的间隔执行新的完整备份,以便为数据建立新的差异基准。 例如,您可以每周执行一次整个数据库的完整备份(即完整数据库备份),然后在该周内执行一系列常规的差异数据库备份。

在还原过程中,还原差异备份之前,必须先还原其基准。 然后只需还原最新的差异备份,即可将数据库前滚到创建差异备份的时间。 通常,应该先还原最新的完整备份,然后再还原基于该完整备份的最新差异备份。

具有内存优化表的数据库的差异备份

有关具有内存优化表的数据库的差异备份的详细信息,请参阅 备份具有内存优化表的数据库

对只读数据库进行差异备份

对于只读数据库,单独使用完整备份比同时使用完整备份和差异备份更容易管理。 当数据库为只读时,备份和其他操作无法更改文件中包含的元数据。 因此,差异备份所要求的元数据(如差异备份开始的日志序列号,即差异基准 LSN)存储在 master 数据库中。 如果在数据库只读时采用的是差异基准,则差异位图指示的更改多于在基准备份之后实际发生的更改。 额外的数据由备份读取,但不会写入到备份中,因为存储在 backupset 系统表中的 differential_base_lsn 用于确定在基准之后是否实际更改了数据。

重新构建、还原只读数据库或者分离再重新附加只读数据库后,会丢失差异基准信息。 这是因为 master 数据库与用户数据库不同步。 SQL Server 数据库引擎 无法检测或防止此问题的出现。 所有后续差异备份都不是基于最新的完整备份,从而可能会出现出人意料的结果。 若要建立新的差异基准,建议先创建完整数据库备份。

对只读数据库进行差异备份的最佳方法

创建只读数据库的完整数据库备份之后,如果要创建后续差异备份,则请备份 master 数据库。

如果 master 数据库丢失,请在还原用户数据库的任何差异备份之前,将其还原。

如果分离和附加计划稍后对其使用差异备份的只读数据库,则应尽快执行此只读数据库和 master 数据库的完整数据库备份。

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

适用于: SQL Server(所有支持的版本)

使用 SQL Server 或 SQL Server Management Studio 在 Transact-SQL中创建差异数据库备份。

准备工作

限制和局限

  • 不允许在显式或隐式事务中使用 BACKUP 语句。

先决条件

  • 创建差异数据库备份需要有以前的完整数据库备份。 如果你的数据库从未进行过备份,则请在创建任何差异备份之前,先执行完整数据库备份。 有关详细信息,请参阅 创建完整数据库备份 (SQL Server)中创建差异数据库备份。

建议

  • 当差异备份的大小增大时,还原差异备份会显著延长还原数据库所需的时间。 建议按设定的间隔执行新的完整备份,以便为数据建立新的差异基准。 例如,您可以每周执行一次整个数据库的完整备份(即完整数据库备份),然后在该周内执行一系列常规的差异数据库备份。

Security

首先检查你的权限!

BACKUP DATABASE 和 BACKUP LOG 权限默认为 sysadmin 固定服务器角色以及 db_ownerdb_backupoperator 固定数据库角色。

备份设备的物理文件的所有权和权限问题将会妨碍备份操作。 SQL Server 需能够读取和写入设备;运行 SQL Server 服务的帐户必须具有写入权限。 但是,用于在系统表中为备份设备添加项目的 sp_addumpdevice 检查文件访问权限。 在你因尝试备份或还原而访问物理资源之前,备份设备物理文件中的权限问题并不明显。

SQL Server Management Studio创建差异备份

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

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

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

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

    可以执行任意恢复模式(完整、大容量日志或简单)的差异备份。

  5. “备份类型” 列表框中,选择 “差异”

    重要

    选择了“差异” 后,请验证是否清除了“仅复制备份” 复选框。

  6. 对于 “备份组件” ,请单击 “数据库”

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

  8. 或者,在 “说明” 文本框中,输入备份集的说明。

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

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

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

    • 若要使备份集在特定日期过期,请单击 “在” ,并输入备份集的过期日期。

  10. 通过单击 “磁盘”“磁带” ,选择备份目标的类型。 若要选择包含单个介质集的多个磁盘或磁带机(最多为 64 个)的路径,请单击 “添加” 。 选择的路径将显示在 “备份到” 列表框中。

    若要删除备份目标,请选择该备份目标并单击 “删除” 。 若要查看备份目标的内容,请选择该备份目标并单击 “内容”

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

  12. 可以通过单击以下选项之一来选择 “覆盖介质” 选项:

    • 备份到现有介质集

      对于此选项,请单击 “追加到现有备份集”“覆盖所有现有备份集” 。 或者,选中 “检查介质集名称和备份集过期时间” 复选框,并在 “介质集名称” 文本框中输入名称(可选)。 如果没有指定名称,将使用空白名称创建介质集。 如果指定了某个介质集名称,将检查该介质(磁带或磁盘)的实际名称是否与在此输入的名称相符。

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

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

      对于该选项,请在 “新建介质集名称” 文本框中输入名称,并在 “新建介质集说明” 文本框中描述介质集(可选)。

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

  14. 如果备份到磁带驱动器(如同 “常规” 页的 “目标” 部分指定的一样),则 “备份后卸载磁带” 选项处于活动状态。 单击此选项可以激活 “卸载前倒带” 选项。

    备注

    除非备份的是事务日志(如同“常规” 页的“备份类型” 部分中指定的一样),否则“事务日志” 部分中的选项处于不活动状态。

  15. SQL Server 2008 Enterprise 及更高版本支持 备份压缩。 默认情况下,是否压缩备份取决于 backup-compression default 服务器配置选项的值。 但是,不管当前服务器级默认设置如何,都可以通过选中 “压缩备份” 来压缩备份,并且可以通过选中 “不压缩备份” 来防止压缩备份。

    查看当前备份压缩默认值

    备注

    另外,可以使用维护计划向导创建差异数据库备份。

Transact-SQL创建差异备份

创建差异数据库备份

  1. 执行 BACKUP DATABASE 语句可以创建差异数据库备份,同时指定:

    • 要备份的数据库的名称。
    • 写入完整数据库备份的备份设备。
    • DIFFERENTIAL 子句,用于指定仅备份自上次创建完整数据库备份之后已更改的数据库部分。

    要求语法为:

示例 (Transact-SQL)

以下示例为 MyAdvWorks 数据库创建完整数据库备份和差异数据库备份。

还原差异数据库备份 (SQL Server)

开始之前

限制和局限

  • 不允许在显式或隐式事务中使用 RESTORE。
  • 无法在早期版本的 SQL Server 中还原较新版本的 SQL Server创建的备份。
  • 在 SQL Server中,可以从使用 SQL Server 2005 (9.x) 或更高版本创建的数据库备份来还原用户数据库。

先决条件

  • 在完整恢复模式或大容量日志恢复模式下,必须先备份活动事务日志(称为日志尾部),然后才能还原数据库。 有关详细信息,请参阅 备份事务日志 (SQL Server)数据库还原到一个新位置并且可以选择重命名该数据库。

Security

权限

如果不存在要还原的数据库,则用户必须有 CREATE DATABASE 权限才能执行 RESTORE。 如果数据库存在,则 RESTORE 权限默认授予 sysadmindbcreator 固定服务器角色成员以及数据库的所有者 (dbo)(对于 FROM DATABASE_SNAPSHOT 选项,数据库始终存在)。

RESTORE 权限被授予那些成员身份信息始终可由服务器使用的角色。 因为只有在固定数据库可以访问且没有损坏时(在执行 RESTORE 时并不会总是这样)才能检查固定数据库角色成员身份,所以 db_owner 固定数据库角色成员没有 RESTORE 权限。

使用 SQL Server Management Studio还原差异数据库备份

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

  2. 展开 “数据库” 。 根据具体的数据库,选择一个用户数据库,或展开“系统数据库”并选择一个系统数据库。

  3. 右键单击数据库,指向“任务” ,再指向“还原” ,然后单击“数据库” 。

  4. “常规” 页上,使用 “源” 部分指定要还原的备份集的源和位置。 选择以下选项之一:

    • Database

      从下拉列表中选择要还原的数据库。 此列表仅包含已根据 msdb 备份历史记录进行备份的数据库。

    备注

    如果备份是从另一台服务器执行的,则目标服务器不具有指定数据库的备份历史记录信息。 这种情况下,请选择 “设备” 以手动指定要还原的文件或设备。

    • 设备

      单击“浏览”按钮 ( ... ) 以打开“选择备份设备” 对话框。 在 “备份介质类型” 框中,从列出的设备类型中选择一种。 若要为 “备份介质” 框选择一个或多个设备,请单击 “添加”

      将所需设备添加到 “备份介质” 列表框后,单击 “确定” 返回到 “常规” 页。

      在“源:设备:数据库”列表框中,选择应还原的数据库名称

      注意 :此列表仅在选择了 “设备” 时才可用。 只有在所选设备上具有备份的数据库才可用。

  5. “目标” 部分中, “数据库” 框自动填充要还原的数据库的名称。 若要更改数据库名称,请在 “数据库” 框中输入新名称。

    备注

    若要在特定的时间点停止还原,请单击 “时间线” 以访问 “备份时间线” 对话框。 有关在特定时间点停止数据库还原的帮助,请参阅将 SQL Server 数据库还原到某个时点(完整恢复模式)

  6. “要还原的备份集” 网格中,选择要通过差异备份还原的备份。

    有关“用于还原的备份集” 网格中的列的信息,请参阅还原数据库(“常规”页)

  7. “选项” 页的 “还原选项” 面板中,可以根据您的实际情况选择下列任意选项:

    • 覆盖现有数据库(WITH REPLACE)
    • 保留复制设置(WITH KEEP_REPLICATION)
    • 还原每个备份之前进行提示
    • 限制对还原数据库的访问(WITH RESTRICTED_USER)

    有关这些选项的详细信息,请参阅还原数据库(“选项”页)

  8. “恢复状态” 框选择一个选项。 此框确定还原操作之后的数据库状态。

    • RESTORE WITH RECOVERY 是默认行为,它通过回滚未提交的事务,使数据库处于可以使用的状态。 无法还原其他事务日志。 如果您要立即还原所有必要的备份,则选择此选项。
    • RESTORE WITH NORECOVERY 不对数据库执行任何操作,不回滚未提交的事务。 可以还原其他事务日志。 除非恢复数据库,否则无法使用数据库。
    • RESTORE WITH STANDBY 使数据库处于只读模式。 它撤消未提交的事务,但将撤消操作保存在备用文件中,以便能够还原恢复结果。

    有关这些选项的说明,请参阅还原数据库(“选项”页)

  9. 如果存在与数据库的活动连接,则还原操作将失败。 选中 “关闭现有连接” 以确保关闭 Management Studio 和数据库之间的所有活动连接。

  10. 如果要在每个还原操作之间进行提示,请选择 “还原每个备份之前进行提示” 。 除非数据库过大并且您要监视还原操作的状态,否则通常没有必要选中该选项。

  11. 可以使用 “文件” 页将数据库还原到一个新位置。 有关移动数据库的帮助,请参阅将数据库还原到新位置 (SQL Server)

  12. 单击“确定”。

使用 Transact-SQL还原差异数据库备份

  1. 执行 RESTORE DATABASE 语句并指定 NORECOVERY 子句,以还原在差异数据库备份之前执行的完整数据库备份。 有关详细信息,请参阅操作说明:还原完整备份
  2. 执行 RESTORE DATABASE 语句以还原差异数据库备份,同时指定:
    • 要应用差异数据库备份的数据库的名称。
    • 从其中还原差异数据库备份的备份设备。
    • NORECOVERY 子句,前提是在还原差异数据库备份之后,还要应用事务日志备份。 否则应指定 RECOVERY 子句。
  3. 通过完整恢复模式或大容量日志恢复模式,还原差异数据库备份可将数据库还原到差异数据库备份完成的点。 若要恢复到故障点,在创建完最后一个差异数据库备份之后,必须应用所有已创建的事务日志备份。 有关详细信息,请参阅应用事务日志备份 (SQL Server)

示例 (Transact-SQL)

A. 还原差异数据库备份

以下示例将还原 MyAdvWorks 数据库及其差异数据库备份。

B. 还原数据库、差异数据库以及事务日志备份

以下示例将还原 MyAdvWorks 数据库及其差异数据库和事务日志备份。

差异备份和恢复示例

  1. 备份:差异备份与完整备份过程类似,只是备份类型选为差异备份
  2. 还原:在进行差异还原的时候要先进行[完整备份]还原,要注意一定要按照下图所示操作,否则会报错。不要着急点击确定,在选项中选中覆盖现有数据库,同时在恢复状态处选择第二个RESTORE WITH NORECOVERY
  • RESTORE WITH RECOVERY 是默认行为,它通过回滚未提交的事务,使数据库处于可以使用的状态。 无法还原其他事务日志。 如果您要立即还原所有必要的备份,则选择此选项。
  • RESTORE WITH NORECOVERY 不对数据库执行任何操作,不回滚未提交的事务。 可以还原其他事务日志。 除非恢复数据库,否则无法使用数据库。
  • RESTORE WITH STANDBY 使数据库处于只读模式。 它撤消未提交的事务,但将撤消操作保存在备用文件中,以便能够还原恢复结果。

点击确定后,可以看到数据库仍处于正在还原状态

然后在数据库上右击 → 任务 → 还原 → 选择数据库,再进行差异还原

选中设备,然后添加进备份的文件,点击确定即可。

完整数据库还原(简单恢复模式)

适用于: SQL Server(所有支持的版本)

数据库完整还原的目的是还原整个数据库。 整个数据库在还原期间处于脱机状态。 在数据库的任何部分变为联机之前,必须将所有数据恢复到同一点,即数据库的所有部分都处于同一时间点并且不存在未提交的事务。

在简单恢复模式下,数据库不能还原到特定备份中的特定时间点。

重要

建议您不要附加或还原来自未知或不可信源的数据库。 这些数据库可能包含执行非预期 Transact-SQL 代码的恶意代码,或通过修改架构或物理数据库结构导致错误。 使用来自未知源或不可信源的数据库前,请在非生产服务器上针对数据库运行 DBCC CHECKDB ,然后检查数据库中的代码,例如存储过程或其他用户定义代码。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

1 条回复

  1. Avatar photo 小布说道:

    如果提示必须序列化,计划任务、手动、脚本备份都不成功怎么办?

发表回复