2008-08-11 104 views
5

当恢复SQL Server数据库,我注意到有3个不同的恢复国家可供选择:SQL Server恢复美国

  • 与恢复还原
  • 有没有恢复还原
  • 与待机
  • 恢复

我一直把它留在它的默认值,但它们是什么意思?

(最好通俗地说)

回答

7

GateKiller,

简单来说(而不是复制粘贴出来的SQLBOL的),所以你可以理解的概念:

RESTORE WITH RECOVERY使用备份媒体文件(如fulldata.bak)至将数据库恢复到创建备份文件的时间。在这种情况下,还原顺序可以还原其他备份并向前滚动它们。如果您想要及时恢复数据库到更早的状态 - 比如开发系统时,这非常棒。

如果你想恢复数据库到最新的数据(例如,如果你正在做一个系统灾难恢复,你不能丢失任何数据),那么你想恢复该备份,然后所有的事务日志创建自那以后备份。这是您使用RESTORE NORECOVERY时的情况。它将允许您将以后的事务日志恢复到故障点(只要您有它们)。

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

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

1

从书本上线,我认为这是很清楚的,你读它之后

NORECOVERY

指示还原操作不回滚任何未提交交易。如果必须应用另一个事务日志,则必须指定NORECOVERY或STANDBY选项。如果未指定NORECOVERY,RECOVERY或STANDBY,则RECOVERY是默认设置。

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

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

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

正在运行还原脚本,并且始终应用日志。

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

恢复

指示还原操作回滚任何未提交的事务。恢复过程结束后,数据库即可使用。

如果规划了后续RESTORE操作(RESTORE LOG或RESTORE DATABASE),则应指定NORECOVERY或STANDBY。

如果未指定NORECOVERY,RECOVERY或STANDBY,则RECOVERY是默认值。从早期版本的SQL Server还原备份集时,可能需要进行数据库升级。当指定WITH RECOVERY时,此升级将自动执行。有关更多信息,请参阅事务日志备份。

STANDBY = undo_file_name

指定撤消文件名,以便恢复效果可以撤消。撤销文件所需的大小取决于未提交事务导致的撤消操作的大小。如果未指定NORECOVERY,RECOVERY或STANDBY,则RECOVERY是默认设置。

STANDBY允许在事务日志恢复之间启用数据库以进行只读访问,并且可以与热备用服务器情况或特殊恢复情况一起使用,在这种情况下可以在日志恢复之间检查数据库。

如果指定的撤销文件名不存在,SQL Server会创建它。如果该文件存在,则SQL Server会覆盖它。

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

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

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

4

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

RECOVERY是用户可以连接和访问数据库的数据库的正常和通常状态(假设它们具有适当的权限设置)。

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

STANDBY与NORECOVERY状态非常相似,但它允许用户在READONLY访问中连接或访问数据库。所以用户只能对数据库运行SELECT命令。这在日志传送中经常用于报告目的。唯一的缺点是,尽管数据库中有用户正在运行查询,但SQL Server或DBA无法还原其他备份文件。因此,如果您有许多用户始终访问数据库,则复制可能会落后。