DBCC CHECKDB(也称为数据库控制台命令 CHECKDB)用于检查 SQL Server 数据库或 Azure SQL 数据库中对象(如表、视图、聚簇、序列、索引和同义词)的物理和逻辑完整性。通常用于修复数据库损坏。当你运行 DBCC CHECKDB 时,实际上会执行以下修复选项:
因此,不需要单独运行 DBCC CHECKALLOC、DBCC CHECKTABLE 或 DBCC CHECKCATALOG。
当您想要修复 SQL 数据库中的腐败问题时,可以运行以下语法:
[ (数据库名称 | 数据库标识符 | 0
[ , NOINDEX
| , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
) ]
[ WITH
{
[ ALL_ERRORMSGS ]
[ , EXTENDED_LOGICAL_CHECKS ]
[ , NO_INFOMSGS ]
[ , TABLOCK ]
[ , ESTIMATEONLY ]
[ , { PHYSICAL_ONLY | DATA_PURITY } ]
[ , MAXDOP = 处理器数量 ]
}
]
]
您可能想知道:
要运行 DBCC CHECKDB 修复操作的数据库的名称或 ID。 如果未指定,或者指定了 0,则默认将命令应用于当前数据库。
指定不执行用户表的非聚簇索引的详细检查。这会减少总的执行时间。NOINDEX 对系统表没有影响,因为始终会对系统表索引执行完整性检查。
当你使用上述的修复选项之一时,你允许DBCC CHECKDB修复找到的错误。要了解这些修复选项之间的区别:
然而,正如Microsoft所建议的,仅将REPAIR选项作为最后的手段。为什么呢?当DBCC CHECKDB报告错误时,建议的最佳选项是从最后一个已知的良好备份中恢复数据库。由于REPAIR_ALLOW_DATA_LOSS不能替代从备份中恢复,因此只有在没有备份可用时才建议使用。
当无法从备份中修复数据库时,REPAIR_ALLOW_DATA_LOSS 是否是唯一的选择?实际上,并非如此。如果 DBCC CHECKDB 报告所选数据库中的错误,您可以使用 SQL 数据库恢复软件——MS SQL Recovery 工具来修复损坏的数据库。您可以使用此软件进行以下操作:
修复SQL Server数据库:包括主要(.mdf)和次要(.ndf)文件
修复可能导致数据库错误的日志文件
修复损坏的SQL服务器数据库对象 - 表,触发器,索引,键,规则及存储过程
恢复已删除或丢弃的SQL数据库记录
修复数据库:
步骤 1: 选择要恢复的损坏数据库
注意:使用此软件前,您需要停止 SQL Server 服务。
第二步:修复损坏的数据库
第三步:导出到数据库或脚本
注意:单击“确定”之前,需要重新启动 SQL Server 服务。
在 SQL Server 中,用户通常选择使用 DBCC CHECKDB 命令来修复数据库。然而,这并不是唯一的选择。如果 DBCC CHECKDB 无法解决问题,或者你不想使用可能造成数据丢失的修复选项 —— REPAIR_ALLOW_DATA_LOSS,你可以使用 MS SQL Recovery 工具作为替代方案来修复你的数据库。