SQL Server备份恢复系列

1    550    3

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

本页目录 隐藏

备份恢复概述

SQL Server备份恢复系列

为何备份?

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

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

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

术语

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

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

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

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

备份类型

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

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)

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

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

SQL Server备份恢复系列

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

点击确定后,可以看到数据库仍处于正在还原状态
SQL Server备份恢复系列

然后在数据库上右击 → 任务 → 还原 → 选择数据库,再进行差异还原
SQL Server备份恢复系列

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

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

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

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

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

重要

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

在简单恢复模式下还原数据库的概述

简单恢复模式下的完整数据库还原只涉及一个或两个 RESTORE 语句,具体取决于是否需要还原差异数据库备份。 如果只使用完整数据库备份,则只需还原最近的备份,如下图所示。

仅还原完整数据库备份

如果还使用差异数据库备份,则应还原最近的完整数据库备份而不恢复数据库,然后还原最近的差异数据库备份并恢复数据库。 下图显示了这一过程。

还原完整数据库备份和差异数据库备份

备注

如果你计划将数据库备份还原到其它服务器实例,请参阅 通过备份和还原来复制数据库

基本 TRANSACT-SQL RESTORE 语法

用于还原完整数据库备份的基本 Transact-SQLRESTORE 语法是:

备注

如果还打算还原差异数据库备份,则应使用 WITH NORECOVERY。

用于还原数据库备份的 RESTORE 语句的基本语法是:

示例 (Transact-SQL)

以下示例首先显示如何使用 BACKUP 语句来创建 AdventureWorks2012 数据库的完整数据库备份和差异数据库备份。 然后按顺序还原这些备份。 将数据库还原到完成差异数据库备份时的状态。

该示例说明数据库完整还原方案的还原序列中的关键选项。 还原顺序 由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。 将省略与此目的不相关的语法和详细信息。 在恢复数据库时,尽管 RECOVERY 选项是默认值,但为清楚起见,仍建议显式指定该选项。

备注

此示例以 ALTER DATABASE 语句开头,该语句将恢复模式设置为 SIMPLE

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

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

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

在完整恢复模式下,还原数据备份之后,必须还原所有后续的事务日志备份,然后再恢复数据库。 您可以将数据库还原到这些日志备份之一的特定 恢复点 。 恢复点可以是特定的日期和时间、标记的事务或日志序列号 (LSN)。

还原数据库时,特别是在完整恢复模式或大容量日志恢复模式下,您应使用一个还原顺序。 还原顺序 由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。

不受信任的源

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

旧版本中的备份

有关支持从 SQL Server的早期版本进行备份的信息,请参阅 RESTORE (Transact-SQL)中的“兼容性支持”部分。

将数据库还原到故障点

通常,将数据库恢复到故障点分为下列基本步骤:

  1. 备份活动事务日志(称为日志尾部)。 此操作将创建结尾日志备份。 如果活动事务日志不可用,则该日志部分的所有事务都将丢失。

    重要

    在大容量日志恢复模式下,备份任何包含大容量日志操作的日志都需要访问数据库中的所有数据文件。 如果无法访问该数据文件,则不能备份事务日志。 在这种情况下,您必须手动重做自最近备份日志以来所做的所有更改。

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

  2. 还原最新完整数据库备份而不恢复数据库 (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY)。

  3. 如果存在差异备份,则还原最新的差异备份而不恢复数据库 (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY)。

    还原最新差异备份可减少必须还原的日志备份数。

  4. 从还原备份后创建的第一个事务日志备份开始,使用 NORECOVERY 依次还原日志。

  5. 恢复数据库 (RESTORE DATABASE database_name WITH RECOVERY)。 此步骤也可以与还原上一次日志备份结合使用。

下图说明此还原顺序。 故障发生后 (1),将创建结尾日志备份 (2)。 接着,将数据库还原到该故障点。 这涉及到还原数据库备份、后续差异备份以及在差异备份后执行的每个日志备份,包括结尾日志备份。

将数据库完全还原到故障的时间点

备注

计划将数据库备份还原到其它服务器实例时,请参阅 通过备份和还原来复制数据库

基本 TRANSACT-SQL RESTORE 语法

上图中还原顺序的基本 RESTORETransact-SQL 语法如下:

示例:恢复到故障点 (Transact-SQL)

以下 Transact-SQL 示例显示了将数据库还原到故障点的还原顺序中的基本选项。 此示例将创建数据库的结尾日志备份。 接下来,此示例将还原完整数据库备份和日志备份,然后还原结尾日志备份。 此示例将在最后的单独步骤中恢复数据库。

备注

此示例使用在 完整数据库备份 (SQL Server)中的“兼容性支持”部分。 在备份数据库之前, AdventureWorks2012 示例数据库设置为使用完整恢复模式。

将数据库还原到日志备份中的某个时间点

在完整恢复模式下,完整的数据库还原通常可恢复到日志备份中的某个时间点、标记的事务或 LSN。 但是,在大容量日志恢复模式下,如果日志备份包含大容量更改,则不能进行时点恢复。

时点还原方案示例

下例假定针对一个关键任务型数据库系统,每天午夜创建一个完整数据库备份;从星期一到星期六,每小时创建一个差异数据库备份;全天每 10 分钟创建一个事务日志备份。 若要将数据库还原到星期三凌晨 5:19 的状态, 请执行以下操作:

  1. 还原星期二午夜创建的完整数据库备份。
  2. 还原星期四凌晨 5:00 创建的差异数据库 备份。
  3. 应用星期四凌晨 5:10创建的事务日志 备份。
  4. 应用星期三凌晨 5:20 创建的事务日志 备份,指定恢复进程仅应用到凌晨 5:19 之前发生的事务。

或者,如果需要将数据库还原到它在星期四凌晨 3:04 的状态, 而在星期四凌晨 3:00 创建的差异数据库备份已不可用, 则执行下列操作:

  1. 还原在星期三午夜创建的数据库备份。
  2. 还原星期四凌晨 2:00 创建的差异数据库 备份。
  3. 应用从星期四凌晨 2:10 到 3:00 创建的所有事务 日志 备份。
  4. 应用星期四凌晨 3:10 创建的事务日志 备份,停止凌晨 3:04 的恢复进程。

备注

有关时间点存储的示例,请参阅 将 SQL Server 数据库还原到某个时间点(完整恢复模式)中的“兼容性支持”部分。

还原事务日志备份 (SQL Server)

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

本主题说明如何使用 SQL Server 或 SQL Server Management Studio 在 Transact-SQL中还原事务日志备份。

开始之前

先决条件

  • 备份必须按照其创建顺序进行还原。 在还原特定的事务日志备份之前,必须先还原下列以前备份,而不回滚未提交的事务,即 WITH NORECOVERY:

    • 在特定事务日志备份之前执行的完整数据库备份和上次差异备份(如果有)。 创建最新的完整数据库备份或差异数据库备份之前,数据库必须使用完整恢复模式或大容量日志恢复模式。

    • 在完整数据库备份之后执行的所有事务日志备份或在特定事务日志备份之前执行的差异备份(如果您还原了差异备份)。 必须按照创建日志备份的顺序应用它们,并且日志链没有间隔。

    有关事务日志备份的详细信息,请参阅事务日志备份 (SQL Server)应用事务日志备份 (SQL Server)

Security

权限

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

使用 SQL Server Management Studio

警告

一般的还原过程需要在“还原数据库”对话框中同时选择日志备份以及数据和差异备份。

还原事务日志备份

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

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

  3. 右键单击该数据库,指向“任务”,再指向“还原”,然后单击“事务日志”,这将打开“还原事务日志”对话框。

    备注

    如果 “事务日志” 灰显,您可能需要首先还原完整备份或差异备份。 使用 “数据库” 备份对话框。

  4. “常规” 页上的 “数据库” 列表框中,选择数据库名称。 仅列出处于还原状态的数据库。

  5. 若要指定要还原的备份集的源和位置,请单击以下选项之一:

    • 从数据库以前的备份

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

    • 从文件或磁带

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

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

  6. “选择要还原的事务日志备份” 网格中,选择要还原的备份。 此网格列出了选定数据库可以使用的事务日志备份。 只有在日志备份的 “第一个 LSN” 大于数据库的 “最后一个 LSN” 时,此日志备份才可用。 日志备份按照它们所包含的日志序列号 (LSN) 的顺序排列,并且也必须按照这种顺序还原。

    下表列出了网格的列标题并对列值进行了说明。

    标头
    还原如果复选框处于选中状态,则指示要还原相应的备份集。
    名称备份集的名称。
    组件备份组件:数据库、文件或 (对于事务日志) 。
    Database备份操作中涉及的数据库的名称。
    开始日期备份操作开始的日期和时间(按客户端的区域设置显示)。
    完成日期备份操作完成的日期和时间(按客户端的区域设置显示)。
    第一个 LSN备份集中第一个事务的日志序列号。 对于文件备份为空。
    最后一个 LSN备份集中最后一个事务的日志序列号。 对于文件备份为空。
    检查点 LSN创建备份时最后一个检查点的日志序号。
    完整 LSN最近的数据库完整备份的日志序列号。
    Server执行备份操作的数据库引擎实例的名称。
    用户名执行备份操作的用户的名称。
    大小备份集的大小(字节)。
    位置备份集在卷中的位置。
    过期日期备份集过期的日期和时间。
  7. 选择以下方案之一:

    • 时间点

      保留默认值(“最近状态”);或者通过单击“浏览”按钮,打开“时间点还原”对话框,从中选择特定的日期和时间。

    • 标记的事务

      将数据库还原为以前标记的事务。 选择此选项会启动 “选择标记的事务” 对话框,从而显示一个网格,列出选定事务日志备份中可以使用的标记的事务。

      默认情况下,将一直还原到(但不包含)标记的事务为止。 若要同时还原标记的事务,请选择 “包含标记的事务”

      下表列出了网格的列标题并对列值进行了说明。

      标头
      显示一个用于选择标记的复选框。
      事务标记提交事务时,用户为标记的事务指定的名称。
      Date事务的提交日期及时间。 事务日期和时间显示为 msdbgmarkhistory 表中所记录的日期和时间,而非客户端计算机的日期和时间。
      说明提交事务时,用户为标记的事务指定的说明(如果有的话)。
      LSN所标记事务的日志序列号。
      Database提交标记的事务时所在数据库的名称。
      用户名提交标记事务的数据库用户的名称。
  8. 若要查看或选择高级选项,请在 “选择页” 窗格中单击 “选项”

  9. “还原选项” 部分中,选项有:

    • 保留复制设置(WITH KEEP_REPLICATION)

      将已发布的数据库还原到创建该数据库的服务器之外的服务器时,保留复制设置。

      此选项只能与“回退未提交的事务,使数据库处于可以使用的状态...”选项(等效于使用 RECOVERY 选项还原备份,将在后面予以介绍)一起使用。

      选择此选项等效于在 RESTORE 语句中使用 Transact-SQLKEEP_REPLICATION 选项。

    • 还原每个备份之前进行提示

      如果选中此选项,则在第一个备份集之后还原每个备份集之前,将显示“继续还原”对话框,询问你是否要继续此还原顺序。 此对话框显示下一个介质集(如果可用)的名称、备份集的名称以及备份集的说明。

      如果对于不同介质集必须更换磁带,则此选项特别有用。 例如,如果服务器只有一个磁带设备,则可以使用此选项。 待您做好继续操作的准备后,再单击 “确定”

      单击 “否” 将使数据库保持还原状态。 完成上次还原之后,您可以在方便时继续按顺序还原。 如果下一个备份是数据备份或差异备份,请再次使用 “还原数据库” 任务。 如果下一个备份是日志备份,请使用 “还原事务日志” 任务。

    • 限制对还原数据库的访问(WITH RESTRICTED_USER)

      使还原的数据库仅供 db_ownerdbcreatorsysadmin 的成员使用。

      选择此选项等效于在 RESTORE 语句中使用 Transact-SQLRESTRICTED_USER 选项。

  10. 对于 “恢复状态” 选项,请指定还原操作之后的数据库状态。

    • 回退未提交的事务,使数据库处于可以使用的状态。无法还原其他事务日志。(RESTORE WITH RECOVERY)

      恢复数据库。 此选项等效于 RESTORE 语句中的 Transact-SQLRECOVERY 选项。

      请仅在没有要还原的日志文件时选择此选项。

    • 不对数据库执行任何操作,不回退未提交的事务。可以还原其他事务日志。(RESTORE WITH NORECOVERY)

      使数据库处于未恢复的 RESTORING 状态。 此选项等效于在 RESTORE 语句中使用 Transact-SQLNORECOVERY选项。

      如果选择此选项, “保留复制设置” 选项将不可用。

      重要

      对于镜像或辅助数据库,应始终选择此选项。

    • 使数据库处于只读模式。撤消未提交的事务,但将撤消操作保存在文件中,以便可使恢复效果逆转。(RESTORE WITH STANDBY)

      使数据库处于备用状态。 此选项等效于在 RESTORE 语句中使用 Transact-SQLSTANDBY 选项。

      选择此选项需要您指定一个备用文件。

  11. 可选选项。如果选中此选项,请在 “备用文件” 文本框中指定备用文件的名称。 如果您使数据库处于只读模式,则必须选中此选项。 您可以浏览到该备用文件,也可以在文本框中键入其路径名。

使用 Transact-SQL

重要

我们建议您在每个 RESTORE 语句中显式指定 WITH NORECOVERY 或 WITH RECOVERY 以消除混淆。 在编写脚本时,这样做尤其重要。

还原事务日志备份

  1. 执行 RESTORE LOG 语句应用事务日志备份,同时指定:

    • 事务日志将应用到的数据库的名称。
    • 将从其中还原事务日志备份的备份设备。
    • NORECOVERY 子句。

    此语句的基本语法如下:

    其中,database_name 是数据库的名称, 是包含正在还原的日志备份的设备的名称。

  2. 对必须应用的每个事务日志备份重复步骤 1。

  3. 按照还原顺序还原了最后一个备份之后,可使用以下语句之一恢复数据库:

    • 作为上一个 RESTORE LOG 语句的一部分恢复数据库:

    • 等待使用单独的 RESTORE DATABASE 语句恢复数据库:

      通过等待恢复数据库,可以确认已还原所有必需的日志备份。 执行时点还原时最好使用该方法。

    重要

    如果要创建镜像数据库,则省略恢复步骤。 镜像数据库必须仍处于 RESTORING 状态。

示例 (Transact-SQL)

默认情况下, AdventureWorks2012 数据库使用简单恢复模式。 以下示例要求修改数据库以使用完整恢复模式,如下所示:

A. 应用单个事务日志备份

以下示例开始时使用名为 AdventureWorks2012 备份设备上的完整数据库备份来还原 AdventureWorks2012_1数据库。 然后该示例应用名为 AdventureWorks2012_log备份设备上的第一个事务日志备份。 最后,该示例恢复数据库。

B. 应用多个事务日志备份

以下示例开始时使用名为 AdventureWorks2012 备份设备上的完整数据库备份来还原 AdventureWorks2012_1数据库。 然后该示例逐一使用名为 AdventureWorks2012_log备份设备上的前三个事务日志备份。 最后,该示例恢复数据库。

将 SQL Server 数据库还原到某个时点(完整恢复模式)

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

本主题说明如何使用 SQL Server 或 SQL Server Management Studio 将数据库还原到 Transact-SQL中的某个时间点。 本主题仅与使用完整恢复模式或大容量日志恢复模式的 SQL Server 数据库有关。

重要

在大容量日志恢复模式下,如果日志备份包含大容量更改,则不能使用时点恢复方式恢复到该备份内的某个点。 必须将数据库恢复到事务日志备份的结尾。

开始之前

建议

  • 使用 STANDBY 查找未知的时间点。
  • 在还原顺序中尽早指定时间点

Security

权限

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

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

使用 SQL Server Management Studio

将数据库还原到时间点

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

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

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

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

    • Database

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

    备注

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

    • 设备

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

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

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

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

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

  6. 单击 “时间线” 以访问 “备份时间线” 对话框。

  7. “还原到” 部分中,单击 “具体日期和时间”

  8. 使用 “日期”“时间” 框或滑动条来指定应停止还原的具体日期和时间。 单击“确定”。

    备注

    使用 “时间线间隔” 框更改时间线上显示的时间量。

  9. 指定具体时点后,数据库恢复顾问确保只有需要还原到该时点的那些备份在 “要还原的备份集” 网格的 “还原” 列中处于选中状态。 这些选定的备份构成了为您的时点还原建议的还原计划。 应当仅使用选定的备份进行时点还原操作。

    本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

    有关“用于还原的备份集” 网格中的列的信息,请参阅还原数据库(“常规”页)。 有关数据库恢复顾问的信息,请参阅还原和恢复概述 (SQL Server)

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

    • 覆盖现有数据库(WITH REPLACE)
    • 保留复制设置(WITH KEEP_REPLICATION)
    • 限制对还原数据库的访问(WITH RESTRICTED_USER)

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

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

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

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

  12. 如果对于选择的时间点是必需的,则选择“还原前进行结尾日志备份”。 无需修改此设置,但可以选择备份日志尾部(即使不需要)。

  13. 如果存在与数据库的活动连接,则还原操作可能会失败。 选中 “关闭现有连接” 以确保关闭 Management Studio 和数据库之间的所有活动连接。 此复选框可在执行还原操作之前将数据库设置为单用户模式,并在该操作完成后将数据库设置为多用户模式。

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

使用 Transact-SQL

开始之前

始终从日志备份还原到指定时间。 在还原序列的每个 RESTORE LOG 语句中,必须在相同的 STOPAT 子句中指定目标时间或事务。 作为时点还原的先决条件,必须首先还原其端点早于目标还原时间的完整数据库备份。 只要您之后还原每个随后日志备份(到达和包括包含目标时间点的日志备份),该完整数据库备份就可以早于最近的完整数据库备份。

如果数据备份太临近指定的目标时间,而需帮助识别要还原哪个数据库备份,则可以在 RESTORE DATABASE 语句中可选地指定 WITH STOPAT 子句以引发错误。 始终会还原完整数据备份,即使该数据备份包含目标时间也同样如此。

基本 Transact-SQL 语法

RESTORE LOG database_name FROM WITH STOPAT =time, RECOVERY…

恢复点是在 time 指定的 datetime 值或之前发生的最新的事务提交。

要只还原在特定时间点之前所做的修改,请为还原的每个备份指定 WITH STOPAT = time。 这样确保了不会超出目标时间。

将数据库还原到时间点

备注

有关此过程的示例,请参阅本节后面的 示例 (Transact-SQL)

  1. 连接到您要还原数据库的服务器实例。

  2. 执行使用 NORECOVERY 选项的 RESTORE DATABASE 语句。

    备注

    如果部分还原顺序不包括任何 FILESTREAM 文件组,则不支持时间点还原。 可以强制该还原顺序以继续执行操作。 但在 RESTORE 语句中省略的 FILESTREAM 文件组将永远无法还原。 若要强制执行时点还原,请指定 CONTINUE_AFTER_ERROR 选项以及 STOPAT、STOPATMARK 或 STOPBEFOREMARK 选项,还必须在随后的 RESTORE LOG 语句中指定后面的三个选项。 如果指定 CONTINUE_AFTER_ERROR,则部分还原顺序将成功,但 FILESTREAM 文件组将不可恢复。

  3. 还原上次差异数据库备份(如果有),而不恢复数据库 (RESTORE DATABASE database_name FROM backup_deviceWITH NORECOVERY)。

  4. 以创建事务日志备份的相同顺序应用每个事务日志备份,同时指定要停止还原日志的时间 (RESTORE DATABASE database_name FROM WITH STOPAT = time , RECOVERY)。

    备注

    RECOVERY 和 STOPAT 选项。 如果事务日志备份不包含要求的时间(例如,如果指定的时间超出了事务日志所包含的时间范围),则会生成警告,并且不会恢复数据库。

示例 (Transact-SQL)

下面的示例将数据库还原到它在 12:00 AMApril 15, 2020 的状态,并显示涉及多个日志备份的还原操作。 在备份设备上,要还原的完整数据库备份 AdventureWorksBackups是设备上的第三个备份集 (FILE = 3),第一个日志备份是第四个备份集 (FILE = 4),第二个日志备份是第五个备份集 (FILE = 5)。

重要

AdventureWorks2012 数据库使用简单恢复模式。 若要允许日志备份,请在完整备份数据库之前,使用 ALTER DATABASE AdventureWorks SET RECOVERY FULL将数据库设置为使用完整恢复模式。

冷迁移

将源库离线或停止SQL Server数据库

SQL Server备份恢复系列

拷贝数据文件和日志文件

将源服务器上的数据库文件(包括mdf和ldf文件)复制到目标服务器上。

这里只拷贝lhrdb.mdflhrdb_1.ldf文件到目标服务器。

SQL Server备份恢复系列

在目标服务器上附加数据库

image-20210915150310105

image-20210915150505192

image-20210915150528522

SQL Server备份恢复系列

点击确定即可还原。

当然,该过程也可以使用SQL命令:

参考:https://docs.microsoft.com/zh-cn/sql/relational-databases/databases/move-a-database-using-detach-and-attach-transact-sql?view=sql-server-ver15

生成数据库备份脚本

SQL Server2008R2

SQL Server 2000

注意

1、使用SSMS或SQL(backup database)进行备份,备份后的备份文件都放在服务器端,所以需要保证服务器端有相关的备份目录。

标签:

头像

小麦苗

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

您可能还喜欢...

1 条回复

  1. 头像 小布说道:

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

5 × 3 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部