【问题标题】:SQL Server 2008 R2 database stuck in RestoreSQL Server 2008 R2 数据库卡在恢复中
【发布时间】:2017-08-15 16:38:56
【问题描述】:

我有两台 SQL Server 2008 R2 服务器,一台用于 PROD,另一台用于 DR。我正在尝试为名为 School 的数据库添加日志传送。

到目前为止的步骤

  • 备份学校数据库
  • 使用 UI 或使用以下 SQL 语句使用数据库恢复,即

    Restore database "School" 
    From disk ='t:\Data\School.bak' 
    with NoRecovery
    
  • 结果是数据库卡在Restoring中

  • 如果我用

    恢复数据库
    Restore database "School" 
    From disk ='t:\Data\School.bak' 
    With recovery
    

    数据库恢复完成,但日志传送失败。

  • 我已删除数据库并使用

    重新创建它
    Restore database "School" 
    From disk ='t:\Data\School.bak' 
    With **NoRecovery** 
    

    但仍卡在正在恢复状态

有没有一种方法可以在不让数据库卡在恢复状态的情况下恢复数据库。

【问题讨论】:

    标签: sql-server sql-server-2008-r2 log-shipping


    【解决方案1】:

    这对我来说似乎是预期的行为。我是不是看错了什么?

    使用NORECOVERY 选项还原数据库和任何差异或所需的事务日志备份后,您需要告诉 SQL Server 您已完成文件还原。 NORECOVERY 选项专门用于让您恢复多个文件。

    你应该只需要运行:

    RESTORE DATABASE [School] WITH RECOVERY;
    

    这将告诉 SQL Server 您已完成,它将完成恢复,并且不再显示为正在恢复。

    【讨论】:

      【解决方案2】:

      我已经删除了数据库并使用从磁盘还原数据库“School”重新创建它 ='t:\Data\School.bak' with NoRecovery

      如果你没有更多的日志,你也必须使用下面的命令

      restore database databasename with recovery
      

      更多信息:

      使用 UI 或使用以下 SQL 语句使用数据库恢复,即

      下次尝试使用tsql发出restore语句,以便了解状态

      restore database databasename from disk="path"
       with stats=5
      

      现在,如果您想深入了解它在哪里以及它在做什么,您可以使用如下所示的跟踪标志

      dbcc traceon(3004,3605,-1)
      GO
        restore database databasename from disk="path"
           with stats=5
      

      这会将输出记录到错误日志,如下所示

      2008-01-23 08:59:56.26 spid52 恢复数据库:数据库 dbPerf_MAIN
      2008-01-23 08:59:56.26 spid52 打开备份集
      2008-01-23 08:59:56.31 spid52 恢复:配置部分已加载 2008-01-23 08:59:56.31 spid52 恢复:备份集已打开
      2008-01-23 08:59:56.31 spid52 恢复:计划开始
      2008-01-23 08:59:56.32 spid52 停止全文抓取数据库 dbPerf_MAIN
      2008-01-23 08:59:56.32 spid52 卸载全文目录
      2008-01-23 08:59:56.32 spid52 X 锁定数据库:dbPerf_MAIN
      2008-01-23 08:59:56.32 spid52 恢复:计划完成
      2008-01-23 08:59:56.32 spid52 恢复:dbPerf_MAIN 上的 BeginRestore(离线)
      2008-01-23 08:59:56.40 spid52 恢复:准备容器 2008-01-23 08:59:56.43 spid52 恢复:容器准备就绪

      对于您当前的问题,您可以查看事件日志,因为它会记录当前阶段

      有没有一种方法可以在不让数据库卡在恢复状态的情况下恢复数据库。

      您必须获取备份的 spid 并查看等待类型并相应地进行故障排除

      select * from sys.dm_Exec_requests where sessionid=backupspid
      

      【讨论】:

      • 感谢您的回复。还原通过 restore 命令完成,但是我可以使用 No recovery 重新运行还原,因为我需要打开日志传送。
      • 您无法通过恢复运行还原,然后再运行 norecovery
      猜你喜欢
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多