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

2021-09-17 09:49:28 浏览数 (23634)

当我们想与关系数据库交互时,SQL 就会出现并帮助用户与数据库进行交互。SQL 从高级语言中获取用户的输入,然后访问将代码转换为机器可理解的形式。SQL 确实会恢复数据库文件,但有时 SQL 服务器恢复暂挂阶段会进入帐户,这会停止恢复过程并将关系数据库置于恢复暂挂状态。在本文中,将向你提供各种方法来修复 SQL Server 数据库中的恢复挂起状态。

将 SQL 数据库置于恢复模式的原因

SQL 服务器恢复挂起可能是因为在解析数据库中的某些事务期间系统关闭不当。

当你的硬盘或 RAM 中没有足够的空间时,有时运行各种查询会导致 SQL 数据库恢复挂起状态。各种用户移动他们的日志文件,以便可以增加系统的吞吐量,但在传输 SQL 文件时,他们的数据被损坏,这迫使数据库处于恢复挂起状态。 

SQL Server 数据库中的各个阶段

SQL Server 数据库中存在三个管理阶段,它们根据损坏的严重程度进行划分。 

在线阶段- 如果用户在 SQL 数据库服务器上工作时正在执行查询并且一个数据库文件在此过程之间损坏,则数据库保持在线并且仍然可以在线访问。这个阶段被称为在线阶段。

可疑阶段- 在 SQL 应用程序启动时,如果服务器无法恢复数据库,则 SQL 将数据库标记为可疑。

恢复挂起阶段- 此阶段发生在 SQL Server 知道必须运行数据库恢复但有什么阻止它启动时。在这种情况下,SQL Server 会将 DB 标记为“Recovery Pending”状态。

恢复待处理

你可以通过在 SQL 数据库上运行以下命令来自行检查处于恢复挂起状态的数据库。

从 sys.databases SELECT name, state_desc 并写 GO 并按回车查看 SQL 数据库恢复挂起状态为;

脚本结果

可以看出结果中位置6的Demo是一个​RECOVERY PENDING STATE​的数据库。

现在让我们研究一下恢复 SQL server 恢复挂起阶段的方法。

SQL Server 数据库中的手动恢复挂起状态

在恢复模式下解决 SQL 数据库问题的手动方法是通过两个步骤完成的。在我们研究这些步骤之前,我建议复制一份你的 SQL 数据库,这样如果你无法解析这些步骤,那么你的数据就不会受到损坏。

第 1 步

在紧急模式下勾选 SQL 并强制修复它。使用 Alter DB 和 CHECKDB 命令删除 MS SQL 恢复挂起状态,如下所示:

ALTER DATABASE [DBName] SET EMERGENCY;

ALTER DATABASE [DBName] set single_user;

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

ALTER DATABASE [DBName] set multi_user

SQL 通过将 SQL 服务器从紧急阶段中解放出来来帮助他们的用户,但如果上述命令不能帮助你解决问题,那么,

使用以下命令将数据库置于紧急模式,

ALTER DATABASE mydatabase SET EMERGENCY​。使用此命令后,紧急标记将放置在文件后面。

对象浏览器

现在,你必须通过应用以下查询将 SQL 数据库从紧急模式设置回正常模式,

ALTER DATABASE mydatabase SET ONLINE​。

第 2 步

将数据库设置为紧急模式并分离并重新连接主数据库

要执行此步骤以克服 ​SQL server recovery Pending ​状态,你需要执行与步骤 1 中所做的相同的步骤,将数据库置于紧急状态。此用户需要通过运行查询使 MS SQL 脱机,然后再次联机,以克服 MS SQL 恢复挂起状态。

ALTER [DBName] SET EMERGENCY;

ALTER DATABASE [DBName] set multi_user

EXEC sp_detach_db '[DBName]'

EXEC sp_attach_single_file_db @DBName = '[DBName]', @physname = N'[mdf path]'  

使用第二步,用户将能够创建一个新的日志文件,损坏的文件会自动从数据库中删除。让我们看看你在使用第 1 步和第 2 步消除 SQL 服务器恢复挂起问题时将遇到的问题。

手动方法限制

  • 在修复 SQL Server 数据库中的恢复挂起状态时,数据库损坏程度可能很高。
  • 如果你不熟练或来自技术领域,你将无法很好地运行这些命令,从而导致 SQL 数据库文件混乱。
  • 手动将 SQL 服务器联机或脱机可能会使你的应用程序完全损坏,因此关系数据库会受到很大的挫折,从而导致整个安装应用程序崩溃。

现在让我们转向另一种控制 SQL 服务器数据库恢复挂起问题的方法。

SQL Server 数据库中的专业恢复挂起状态 

克服 SQL 服务器恢复挂起问题的专业方法比手动方法更好。在这方面,我们使用SQL 数据库恢复工具来修复和恢复 SQL 数据库的损坏文件,并帮助你修复 SQL 服务器数据库中的恢复挂起状态。此工具支持 MDF 和 NDF 文件。使用此实用程序可以恢复你的数据库表、触发器、记录、函数和存储过程。 

牢记数据的重要性,此实用程序强制执行两种标准和高级恢复模式。在使用 SQL 数据库恢复工具进行修复后,用户还可以将文件从一台 SQL 服务器保存到另一台。这个工具欢迎所有版本的windows。使用此软件时也可以考虑架构和快照。 

使用 SQL 数据库恢复工具后,您不会在修复 SQL Server 数据库恢复挂起状态时遇到任何问题。

总结

为了解决 SQL 服务器恢复挂起状态,我描述了导致系统处于恢复挂起状态的 SQL 数据库文件损坏和损坏的各种原因。在此之后介绍了纠正阶段手动方式,它分为 2 个部分。但是由于用户在执行手动查询时遇到的问题,自动 SQL 数据库恢复工具进入了帐户。