恢复 SQL Server 数据库时,我注意到有 3 种不同的恢复状态可供选择:

  • 恢复恢复
  • 恢复但不恢复
  • 待机状态下恢复

我总是将其保留为默认值,但它们都意味着什么?

(最好是通俗易懂的)

有帮助吗?

解决方案

门杀手,

简单来说(而不是从 SQLBOL 中复制粘贴),这样您就可以理解这些概念:

RESTORE WITH RECOVERY 使用备份媒体文件(例如fulldata.bak)将数据库恢复到创建备份文件的时间。如果您想及时返回以将数据库恢复到较早的状态(例如开发系统时),这非常有用。

如果您想将数据库恢复到最新的数据(即就像如果您进行系统灾难恢复并且不能丢失任何数据)那么您想要恢复该备份,然后恢复自该备份以来创建的所有事务日志。这是当您使用 RESTORE NORECOVERY 时。它将允许您将后续事务日志恢复到故障点(只要您拥有它们)。

RECOVERY WITH STANDBY 能够将数据库恢复到部分日期(如上面的 NORECOVERY),但允许数据库仍以只读方式使用。新的事务日志仍然可以应用于数据库以使其保持最新(备用服务器)。当恢复完整数据库以恢复系统操作需要很长时间时,请使用此选项。(IE。如果您有一个多 TB 数据库,需要 16 小时才能恢复,但可以每 15 分钟收到事务日志更新)。

这有点像镜像服务器 - 但没有“每笔交易”实时发送到备份服务器。

其他提示

您可以将 Microsoft SQL Server 数据库设置为 NORECOVERY、RECOVERY 或 STANDBY 模式。

RECOVERY 是数据库的正常和常用状态,用户可以在该状态下连接和访问数据库(前提是他们设置了适当的权限)。

NORECOVERY 允许数据库管理员恢复其他备份文件,例如差异备份或事务备份。当数据库处于此状态时,用户无法连接或访问该数据库。

STANDBY 与 NORECOVERY 状态几乎相同,但它允许用户以 READONLY 访问方式连接或访问数据库。因此用户只能对数据库运行 SELECT 命令。这在日志传送中经常用于报告目的。唯一的缺点是,当有用户在数据库中运行查询时,SQL Server 或 DBA 无法恢复额外的备份文件。因此,如果有许多用户一直访问数据库,那么复制可能会落后。

网上的书,我想你读完之后就很清楚了

没有恢复

指示恢复操作不要回滚任何未提交的事务。如果必须应用另一个事务日志,则必须指定 NORECOVERY 或 STANDBY 选项。如果未指定 NORECOVERY、RECOVERY 或 STANDBY,则默认为 RECOVERY。

当还原数据库备份和多个事务日志时,或者需要多个 RESTORE 语句(例如,完整数据库备份后跟差异数据库备份)时,SQL Server 要求对除最终 RESTORE 语句之外的所有语句使用WITH NORECOVERY 选项。

注意 当指定 NORECOVERY 选项时,数据库在此中间、非恢复状态下不可用。

当与文件或文件组还原操作一起使用时,NORECOVERY 会强制数据库在还原操作后保持还原状态。这在以下任一情况下很有用:

正在运行恢复脚本并且始终应用日志。

使用一系列文件恢复,并且数据库不能在两个恢复操作之间使用。

恢复

指示恢复操作回滚任何未提交的事务。恢复过程完成后,数据库就可以使用了。

如果计划执行后续 RESTORE 操作(RESTORE LOG 或从差异中恢复数据库),则应指定 NORECOVERY 或 STANDBY。

如果未指定 NORECOVERY、RECOVERY 或 STANDBY,则默认为 RECOVERY。从早期版本的 SQL Server 恢复备份集时,可能需要升级数据库。当指定WITH RECOVERY 时,会自动执行此升级。有关详细信息,请参阅事务日志备份。

支持 = 撤消文件名

指定撤消文件名,以便可以撤消恢复效果。撤消文件所需的大小取决于未提交事务产生的撤消操作量。如果未指定 NORECOVERY、RECOVERY 或 STANDBY,则默认为 RECOVERY。

STANDBY 允许在事务日志恢复之间启动数据库以进行只读访问,并且可以用于热备用服务器情况或在日志恢复之间检查数据库很有用的特殊恢复情况。

如果指定的撤消文件名不存在,SQL Server 将创建它。如果该文件确实存在,SQL Server 将覆盖它。

同一撤消文件可用于同一数据库的连续恢复。有关详细信息,请参阅使用备用服务器。

重要 如果包含指定撤消文件名的驱动器上的可用磁盘空间已耗尽,则恢复操作将停止。

当需要升级数据库时不允许使用 STANDBY。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top