如何修复SQL Server数据库中的恢复挂起状态?
答案 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.首先以紧急模式标记数据库,然后分离主数据库,然后将其重新附加到服务器。
答案 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的答案可能会看到以下错误:
“该进程无法访问该文件,因为该文件正在被另一个进程使用”
要解决此问题:
答案 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
状态。