SQL Server如何告知数据库正在还原或具有恢复状态

时间:2013-01-21 16:49:38

标签: sql-server-2008 restore

在SQL Server中,Restore有3种状态,Recovery,Unrecovery和Standby,它们决定了处理“未提交的事务”的方式。

但是如果要恢复的备份绝对没有明确的未提交事务呢?

我很确定恢复与Unrecovery有所不同;您无法在恢复状态下还原日志备份,并且无法读取处于“未恢复”状态的数据。

但SQL Server如何知道?是否有任何隐式的Flag或后台交易?

感谢您的所有建议。

1 个答案:

答案 0 :(得分:0)

SQL Server还原分为三个阶段:

  1. 加载数据
  2. 重新应用未完全转到磁盘的已提交事务。
  3. 撤消inflight但未提交的交易。
  4. 每次恢复都会执行前两个。仅当您指定RECOVERY选项时,UNDO阶段。这允许SQL Server将日志备份的还原应用于此数据库,该数据库可能包含一个或多个正在进行的事务的COMMIT

    UNDO阶段发生的信息与数据库一起存储,以及进一步行动所需的lsn数字。

    您可以在此处阅读有关所有这些内容的详细信息:http://msdn.microsoft.com/en-us/library/ms191455(v=sql.105).aspx

    您可以使用此查询查看数据库的当前状态:

    SELECT name,state_desc FROM sys.databases;