如何修复SQL Server数据库中的恢复挂起状态?

时间:2018-09-14 05:58:58

标签: sql-server

如何修复SQL Server数据库中的恢复挂起状态?

8 个答案:

答案 0 :(得分:5)

执行以下查询集:

ALTER DATABASE [DBName] SET EMERGENCY;
GO

ALTER DATABASE [DBName] set single_user
GO

DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS;
GO 

ALTER DATABASE [DBName] set multi_user
GO

有关更多信息:https://www.stellarinfo.com/blog/fix-sql-database-recovery-pending-state-issue/

答案 1 :(得分:0)

有两种手动解决方案可修复数据库暂挂状态。 1.在紧急模式下标记数据库并开始强制修复 2.首先以紧急模式标记数据库,然后分离主数据库,然后将其重新附加到服务器。

有关更多信息:https://community.spiceworks.com/how_to/157233-how-to-fix-recovery-pending-state-in-sql-server-database

答案 2 :(得分:0)

  

执行以下查询集:

     

ALTER DATABASE [DBName] SET EMERGENCY;开始

     

ALTER DATABASE [DBName]设置单用户GO

     

DBCC CHECKDB([DBName],REPAIR_ALLOW_DATA_LOSS)带有ALL_ERRORMSGS;开始

     

ALTER DATABASE [DBName]设置多用户GO有关更多信息:   https://www.stellarinfo.com/blog/fix-sql-database-recovery-pending-state-issue/

此解决方案对我有用。感谢分享。

答案 3 :(得分:0)

重命名Database .mdf文件名时,会发生此问题。解决:

重新启动Services中的SQL EXPRESS,待解决问题。

答案 4 :(得分:0)

在使用SQL Management Studio时,当用户更改数据库名称时会出现间歇性问题,有时SQL Server会对两个不同的数据库使用相同的DB文件。如果SQL Server处于这种状态,那么尝试Mahesh的答案可能会看到以下错误:

“该进程无法访问该文件,因为该文件正在被另一个进程使用”

要解决此问题:

  1. 从服务控制台MMC中停止MSSQLServer服务
  2. 重命名数据库和日志文件(数据库属性->文件)
  3. 在SQL Management Studio的“对象资源管理器”窗口中,如果您看到“恢复”中显示了另一个数据库节点(除了您要解决此问题的数据库节点),请刷新“数据库文件夹”。等待状态”,然后继续进行下一步。如果您没有看到此错误,则需要尝试其他方法来解决此问题
  4. 为步骤3和!!中的新问题节点备份数据库文件和日志文件!删除数据库
  5. 恢复在步骤2中更改的Db文件名
  6. 现在从服务控制台启动MSSQLServer服务
  7. 重试Mahesh回答中的步骤

答案 5 :(得分:0)

确保“ SQL Server(201x)”服务(在Windows Services(管理器)中列出)的“登录”帐户具有足够的权限。您可以尝试将其更改为另一个登录。就我而言,将其从“此帐户”更改为“本地系统帐户”,重新启动服务和SSMS,然后再次登录SSMS,即可解决此问题。

背景(以我为例):我在本地PC上运行了3个不同的SQL实例(2008r2、2012和2014),并且正忙于将一个文件夹(后来我发现其中包含一些SQL数据和日志文件)移动到另一台PC。中途结束时,我停止了服务中的SQL Services(Manager),希望文件可以无问题地通过-因为它们将不再使用。我意识到我需要确认数据库名称和SQL中的文件位置(以便在新PC上再次设置它们),因此我将SQL数据和日志文件复制回了(到原始位置)。重新启动PC后,各种实例上的大多数数据库都显示为:SSMS中的“正在恢复”。在首先尝试从stellarinfo(在此处列出为答案)中的两个数据库执行该过程之后,仍然没有任何运气,在Pinal Dave的SQL Authority网站上使用了post,在SQL Server Central上使用了post在查看SQL错误日志并找到“操作系统错误5:“ 5(访问被拒绝。)”之后,我才想到可能与权限相关。SqlBakBlog的另一个post似乎支持这一点。

答案 6 :(得分:0)

在我们的情况下,这是由于磁盘驱动器空间不足而引起的。我们删除了一些垃圾以释放空间,然后通过停止并重新启动SQL Server服务来修复“正在恢复”。

答案 7 :(得分:0)

就我而言,这影响了高可用性 SQL Server 群集中的辅助服务器。 主要是 Synchronizing,但次要是 Recovery Pending

签入 cluadmin.msc 后,意识到集群中的辅助服务器不健康。 然后确定 Cluster Service 在 Windows 更新强制重启后未能在第二个集群框上启动(可能是因为文件共享见证在同一时间在类似的 Windows 更新后重启)。

启动 Cluster Service 使数据库恢复到 Synchronizing 状态。