mssql sqlserver DBCC CHECKDB关键字的用法简介


摘要:
DBCC CHECKDB关键应用于对数据库进行完整性检查,
修复数据库损坏,使数据库能够被重新访问
涉及对数据库操作如下所示:
1 检查系统表
2 进行CHECKALLOC 检查
3 进行CHECKTABLE 检查
4 进行CHECKCATALOG 检查
5 验证索引视图中的内容是否完整
6 验证Service Broker数据



一、CHECKDB语法说明简介

DBCC CHECKDB
(
{ ‘database_name’ | database_id | 0 }
[ , NOINDEX
| { REPAIR_ALLOW_DATA_LOSS
| REPAIR_FAST
| REPAIR_REBUILD
}]

)
[ WITH
{
[ ALL_ERRORMSGS ]
[ , [ NO_INFOMSGS ] ]
[ , [ TABLOCK ] ]
[ , [ ESTIMATEONLY ] ]
[ , [ PHYSICAL_ONLY ] ]
[ , [ DATA_PURITY ] ]
[ , [ EXTENDED_LOGICAL_CHECKS ] ]
}
]
参数说明:
database_name | database_id | 0:
待检查数据库的名称或数据库Id或0(输入0代表当前数据库)
NOINDEX:
不对用户表的非聚集索引执行检查,减少检查时间
REPAIR_ALLOW_DATA_LOSS:
修复报告所有错误,可能会导致数据丢失
REPAIR_ALLOW_DATA_LOSS 选项是受支持的功能,但是,它可能并非总是使数据库处于物理上一致的状态的最佳选项。 如果成功,REPAIR_ALLOW_DATA_LOSS 选项可能会导致一些数据丢失。
实际上,它可能导致的数据丢失多于用户从上次已知成功备份还原数据库导致的数据丢失。

REPAIR_ALLOW_DATA_LOSS 选项不是从已知成功备份还原的替代方法。 这是一个紧急选项,仅当不可从备份恢复时建议作为“最后手段”使用。

REPAIR_FAST:
向后兼容
REPAIR_REBUILD:
修复操作不会丢失数据
ALL_ERRORMSGS:
显示所有错误信息,缺省条件下也显示所有错误信息
EXTENDED_LOGICAL_CHECKS:
如果兼容性级别为 100 ( SQL Server 2008) 或更高,则对索引视图、XML 索引和空间索引(如果存在)执行逻辑一致性检查。
NO_INFOMSGS:
取消所有信息性消息显示
TABLOCK:
使DBCC CHECKDB 获取锁,而不使用内部数据库快照。 这包括一个短期数据库排他 (X) 锁。 TABLOCK 可使 DBCC CHECKDB 在负荷较重的数据库上运行得更快,但 DBCC CHECKDB 运行时会减少数据库上可获得的并发性。
ESTIMATEONLY:
显示运行包含所有其他指定选项的 DBCC CHECKDB 时所需的 tempdb 空间估计量。 不执行实际数据库检查。
PHYSICAL_ONLY:
将检查限制为页和记录标头的物理结构完整性以及数据库的分配一致性。 设计该检查是为了以较小的开销检查数据库的物理一致性,但它还可以检测会危及用户数据安全的残缺页、校验和错误以及常见的硬件故障。
DBCC CHECKDB 完成运行所需的时间可能比早期版本要长得多。
逻辑检查更加全面。
要检查的某些基础结构更为复杂。
引入了许多新的检查以包含新增功能。
因此,使用 PHYSICAL_ONLY 选项可能会大幅减少对较大数据库运行 DBCC CHECKDB 所需的时间,所以对需要频繁检查的生产系统,建议使用此选项。 我们仍然建议完整地定期执行 DBCC CHECKDB。 这些运行的执行频率取决于各业务和生产环境特定的因素。
此参数始终表示 NO_INFOMSGS,不能与任何一个修复选项一同使用。


二、CHECKDB举例应用

--对当前数据库执行checkDb操作    
DBCC CHECKDB;    
GO        
---对数据库test进行检查,不对非聚集索引进行检查
DBCC CHECKDB (test, NOINDEX);    
GO    
---检查当前数据库,取消信息性消息 
DBCC CHECKDB WITH NO_INFOMSGS;    
GO