65.9K
CodeProject 正在变化。 阅读更多。
Home

如何使用 DBCC CHECKDB 命令修复损坏的 SQL 数据库?

2024年8月22日

CPOL

8分钟阅读

viewsIcon

2964

了解使用 DBCC CHECKDB 命令修复 SQL 数据库的循序渐进指南,并探索用于快速安全修复的高级工具。

MS SQL 数据库容易出现损坏和完整性问题。MS SQL 数据库损坏可能由各种内部和外部因素引起,例如突然断电、系统突然关闭、硬件故障、存储空间不足、恶意软件/病毒感染等。数据库损坏可能导致各种错误,甚至数据无法访问。

然而,为了检测和修复数据库中的损坏,SQL Server 提供了 DBCC CHECKDB 命令。DBCC CHECKDB 命令会彻底扫描数据库并检查数据库中所有对象的完整性,例如页面、表、视图等。它还会检测数据库中的撕裂页、校验和失败和其他问题。它有助于识别和解决与损坏相关的问​​题、页面级损坏问题以及 SQL 数据库中的结构问题。

在本文中,我们将了解如何使用 DBCC CHECKDB 命令修复 SQL 数据库。我们还将介绍一款高级 SQL 修复软件,它可以帮助您快速修复损坏的 SQL 数据库并保持完整性。

使用 DBCC CHECKDB 命令修复损坏的 SQL 数据库的过程

DBCC CHECKDB 命令对数据库执行完整性和其他结构检查。如果任何检查失败,该命令将显示一致性错误,并推荐相应的选项来修复数据库。以下是使用 DBCC CHECKDB 检查和修复 SQL 数据库的步骤说明。

首先,您需要执行 DBCC CHECKDB 命令,如下所示,以检查数据库是否损坏。

DBCC CHECKDB ‘database_name’;

如果数据库无法访问,则将其状态更改为 EMERGENCY 模式。此模式允许管理员进行只读访问。要将数据库更改为 EMERGENCY 模式,请运行以下命令

ALTER DATABASE [database_name] SET EMERGENCY

将数据库状态更改为 EMERGENCY 模式后,再次执行 DBCC CHECKDB 命令。如果命令显示一致性错误,您需要使用命令推荐的修复选项来修复数据库。

要修复数据库,首先将其设置为 SINGLE_USER 模式,以阻止其他用户在修复过程中修改数据。为此,请运行以下查询

ALTER DATABASE database_name SET SINGLE_USER

然后,运行 DBCC CHECKDB 命令推荐的修复选项。它将是 REPAIR_REBUILDREPAIR_FASTREPAIR_ALLOW_DATA_LOSS

如果推荐 REPAIR_REBUILD 选项,请运行以下命令。此修复选项可以重建索引,包括非聚集索引。

DBCC CHECKDB (‘Database_name’, REPAIR_REBUILD);

注意REPAIR_REBUILD 选项可以帮助解决数据库中的轻微损坏。REPAIR_REBUILD 选项仅维护向后兼容性的语法。它无助于解决数据库中的复杂损坏问题。

要快速重建数据库,可以使用 REPAIR_FAST 选项。这是命令

DBCC CHECKDB (' Database_name', REPAIR_FAST)
GO

如果 DBCC CHECKDB 命令推荐 REPAIR_ALLOW_DATA_LOSS 选项,请运行以下命令

DBCC CHECKDB (‘Database_name’, REPAIR_ALLOW_DATA_LOSS);

此修复选项会读取并使用可疑页面来解决损坏问题,这增加了恢复数据库的可能性。它可以解决数据库中的所有类型的损坏错误,但可能会导致数据丢失。因此,建议将 REPAIR_ALLOW_DATA_LOSS 选项作为修复数据库的最后手段。

DBCC CHECKDB 命令的局限性

  • 带有 REPAIR_ALLOW_DATA_LOSS 选项的 DBCC CHECKDB 命令可能会取消分配 SQL 数据库中的行或页面以解决问题。已取消分配的数据有时可能无法恢复。
  • 您可能需要反复使用 DBCC CHECKDB 命令来修复数据库中的所有错误,这非常耗时。
  • 有时,该命令可能导致数据库中的逻辑不一致。
  • 它无法恢复数据库中的完整数据。
  • 使用 DBCC CHECKDB 命令修复大型数据库非常耗时。这可能导致长时间的停机。

DBCC CHECKDB 命令的替代方案

尽管 DBCC CHECKDB 命令可以解决数据库中的损坏问题,但它不足以处理复杂的损坏问题,并且可能导致数据丢失。为了克服这些限制,您可以使用第三方 SQL 修复工具,例如 Stellar Repair for MS SQL。它受到 MVP 和 IT 专家的推荐,可以快速修复损坏的 SQL 数据库文件(MDF 和 NDF),且不会丢失任何数据。该工具可从损坏的数据库中恢复所有对象,如表、页面、索引等,并将其保存到新的数据库文件中。

比较分析:DBCC CHECKDB vs Stellar Repair for MS SQL

以下是 DBCC CHECKDB 和 Stellar Repair for MS SQL 之间的快速比较。

  DBCC CHECKDB Stellar Repair for MS SQL
易用性 需要知识和技能才能使用 DBCC CHECKDB 命令成功完成修复过程。 易于使用的用户界面,无需任何技术技能即可执行修复过程。
数据丢失风险 使用带有 REPAIR_ALLOW_DATA_LOSS 选项的 DBCC CHECKDB 命令可能会导致数据丢失。 可从损坏的数据库中恢复所有数据,如表、触发器、索引等,并保持完整性。
     
处理时间 可能需要多次运行 DBCC CHECKDB 命令才能完全修复数据库。这可能非常耗时。 只需几个步骤即可修复 SQL 数据库。
操作系统兼容性 支持 Windows 和 Linux 操作系统。 支持 Windows 和 Linux 操作系统。
成本 DBCC CHECKDB 命令是免费使用的。 带高级功能的付费修复工具。
可恢复对象预览 没有预览可恢复对象的选项。 提供在保存之前预览可恢复对象的选项。
数据完整性 无法保证修复数据的 100% 准确性。 保持恢复数据的完整数据完整性。
文件保存格式 没有多种文件保存选项。 可将修复后的数据库保存到新数据库、实时数据库和其他格式,如 HTML、XLS、SQL 脚本等。

客户评价

Stellar Repair for MS SQL 专注于解决 SQL 数据库中的复杂损坏问题。查看客户评价,了解该工具在修复损坏的 SQL 数据库方面的强大功能。

Microsoft MVP review for Stellar Repair for MS SQL software

https://www.scarydba.com/2020/09/23/review-stellar-repair-for-sql-server/

观看此视频,了解客户对 Stellar Repair for SQL 的评价

https://www.youtube.com/watch?v=yso4axqXxlM

如何使用 Stellar Repair for MS SQL 修复损坏的数据库?

以下是使用 Stellar Repair for MS SQL 修复损坏的 SQL 数据库的循序渐进说明

  • 下载、安装并启动 Stellar Repair for MS SQL 软件。
  • 在“选择数据库”窗口中,单击“浏览”以选择数据库文件(如果您不知道数据文件的位置,可以使用“查找”选项)。

Software interface for Stellar Repair for MS SQL – Select Database

  • 接下来,单击“修复”按钮。
  • 数据库修复完成后,将显示“修复完成”窗口。单击“确定”。

Repair complete window for Stellar Repair for MS SQL

  • 该软件会显示已修复文件的预览。
  • 选择要保存的对象,然后单击“保存”按钮。您可以将修复后的数据保存到实时数据库、新数据库或其他格式,如 CSV、HTML 和 Excel。

Database Saving Option for Stellar Repair for MS SQL

  • 选择保存选项(例如,新数据库),然后单击下一步
  • 连接到服务器下,填写凭据,选择要保存修复文件的位置,然后单击下一步
  • 保存模式窗口中,选择合适的保存模式,然后单击“保存”。
  • 在“保存完成”窗口中,单击“确定”。

请参阅下面的视频,了解该软件的工作原理

结论

您可以使用 DBCC CHECKDB 命令来修复损坏的 SQL 数据库。在本文中,我们讨论了使用 DBCC CHECKDB 命令修复损坏的 SQL 数据库的循序渐进过程。或者,您可以使用专业的 SQL 修复工具,例如 Stellar Repair for MS SQL,来快速修复损坏的 SQL 数据库文件,且不会丢失任何数据。这款 MVP 推荐的工具可以修复 NDF 和 MDF 文件。使用此工具,您可以以最少的时间和精力,轻松地修复数据库。

常见问题解答

DBCC CHECKDB 的主要功能是什么?

DBCC CHECKDB 用于修复损坏的 SQL 数据库。

Stellar Repair for MS SQL 与 DBCC CHECKDB 有何不同?

DBCC CHECKDB 是 SQL Server 中用于修复损坏数据库文件的免费工具,而 Stellar Repair for MS SQL 是一款第三方 SQL 修复工具,甚至可以修复严重损坏的 SQL 数据库文件。

Stellar Repair for MS SQL 是否可以与 DBCC CHECKDB 结合使用?

不,您不能将 Stellar Repair for MS SQL 与 DBCC CHECKDB 结合使用。您可以将其作为修复损坏 SQL 数据库的替代选项。

使用 Stellar Repair for MS SQL 是否存在数据丢失风险??

使用 Stellar Repair for MS SQL 没有数据丢失风险。它会从损坏的数据库文件中恢复所有数据,并将修复后的数据以完整性保存到新的数据库(NDF/MDF)文件中。

我需要技术专业知识才能使用 Stellar Repair for MS SQL 吗?

该工具提供易于导航的用户界面,无需任何技术专业知识。

何时应选择 Stellar Repair for MS SQL 而非 DBCC CHECKDB?

如果您想在不丢失数据且在最短时间内修复数据库,那么您可以使用 Stellar Repair for MS SQL。

Stellar Repair for MS SQL 是否兼容所有版本的 SQL Server?

是的,Stellar Repair for MS SQL 兼容 MS SQL Server 2022 及所有早期版本。

如何使用 DBCC CHECKDB 命令修复损坏的 SQL 数据库? - CodeProject - 代码之家
© . All rights reserved.