dbcc checkdb 用法
dbcc checkdb 用法
dbcc checkdb 用法
DBCC 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
是要对其中的所有对象分配和结构完整性进行检查的数据库。如果未指定,则默认为当前数据库。数据库名称必须符合标识符的规则。
NOINDEX
指定不检查非系统表的非聚集索引。NOINDEX 减少执行总时间,因为它不对用户定义的表的非聚集索引进行检查。NOINDEX 对系统表没有影响,因为 DBCC CHECKDB 总是对所有系统表索引进行检查。
REPAIR_ALLOW_DATA_LOSS
会尝试修复报告中所有错误,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。
REPAIR_FAST
进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。
REPAIR_REBUILD
执行由 REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。
ESTIMATEONLY
预估修复所需要的tempdb空间
NO_INFOMSGS
取消显示所有信息性消息。
ALL_ERRORMSGS
显示针对每个对象报告的所有错误。如果未指定 ALL_ERRORMSGS,则只为每个对象显示前 200 条错误消息。按对象 ID 对错误信息进行排序(从 tempdb 中生成的消息除外)。
PHYSICAL_ONLY
将检查限制为页和记录标头的物理结构完整性、B 树的物理结构以及数据库的分配一致性。设计该检查是为了以较小的开销检查数据库的物理一致性,但它还可以检测会危及用户数据安全的残缺页、校验和错误以及常见的硬件故障。
TABLOCK
使 DBCC CHECKDB 获取锁,而不使用内部数据库快照。这包括一个短期数据库排他 (X) 锁。TABLOCK 可使 DBCC CHECKDB 在负荷较重的数据库上运行得更快,但 DBCC CHECKDB 运行时会减少数据库上可获得的并发性。
EXTENDED_LOGICAL_CHECKS
如果兼容级别为 100 (SQL Server 2008) 或更高,则对索引视图、XML 索引和空间索引(如果存在)执行逻辑一致性检查。
DATA_PURITY
使 DBCC CHECKDB 检查数据库中是否存在无效或越界的列值。例如,DBCC CHECKDB 检测日期和时间值大于或小于 datetime 数据类型的可接受范围的列。
二、DBCC CHECKDB执行流程
1、检查关键系统表
2、对数据库运行DBCC CHECKALLOC
3、对数据库中每个表或试图运行DBCC CHECKTABLE
4、对数据库运行DBCC CHECKCATLOG
5、验证数据库中每个索引试图的内容
6、验证数据库中Service Broker数据
三、对于数据库中每个表,DBCC CHECKDB 检查的方面
1、索引和数据页是否已正确链接。
2、索引是否按照正确的顺序排列。
3、各指针是否一致。
4、每页上的数据是否均合理。
5、页面偏移量是否合理。
四、DBCC CHECKDB 修复步骤
1、修改数据库为紧急模式 ALTER DATABASE 库名 SET EMERGENCY 2、使数据库变为单用户模式 ALTER DATABASE 库名 SET SINGLE_USER 3、修复数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象错误 当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修复报告的错误。但是,这些修复可能会导致一些数据丢失。 DBCC CheckDB (库名 , REPAIR_ALLOW_DATA_LOSS) 命令执行完成后可能会出现以下警告: 警告: 数据库 '库名' 的日志已重新生成。已失去事务的一致性。RESTORE 链已断开,服务器不再有以前的日志文件的上下文,因此您需要了解它们的内容。应运行 DBCC CHECKDB 验证物理一致性。数据库已置于 dbo-only 模式。在准备使数据库可用时,需要重置数据库选项,并删除所有多余的日志文件。 此时可以不用理会此警告,关闭Microsoft SQL Server Management Studio。 4、重新打开Microsoft SQL Server Management Studio,使数据库变回为多用户模式 ALTER DATABASE 库名 SET MULTI_USER 5、重新启动sqlserver
五、要获得好的 DBCC 性能的一些建议
1、在系统使用率较低时运行 CHECKDB。
2、请确保未同时执行其它磁盘 I/O 操作,例如磁盘备份。
3、将 tempdb 放到单独的磁盘系统或快速磁盘子系统中。
4、允许 tempdb 在驱动器上有足够的扩展空间。使用带有 ESTIMATE ONLY 的 DBCC 估计 tempdb 将需要多少空间。
5、避免运行占用大量 CPU 的查询或批处理作业。
6、在 DBCC 命令运行时,减少活动事务。
7、使用 NO_INFOMSGS 选项显著减少处理和 tempdb 的使用。
8、考虑使用带有 PHYSICAL_ONLY 选项的 DBCC CHECKDB 来检查页和记录首部的物理结构。当硬件导致的错误被置疑时,这个操作将执行快速检查。
六、DBCC CHECKDB 在使用时的建议
1、DBCC CHECKDB实际是对当前数据库进行快照,在快照上执行检查,因此防止对当前用户执行出现阻塞和并发问题,CHCEKDB可以在多用户模式下执行
2、DBCC CHECKDB默认使用多线程并行检查,可以使用SP_CONFIGURE 'max degree of parallelism'来设置最大并行度
3、使用WITH PHYSICAL_ONLY以较小开销检查数据库物理一致性
4、使用WITH NO_INDEX来避免检查索引
5、可以使用
SELECT
R.session_id,
R.request_id,
R.percent_complete,
R.start_time,
R.estimated_completion_time,
R.status,
R.command
FROM sys.dm_exec_requests R
WHERE command LIKE '%DBCC CHECK%'
来估算出执行DBCC还需要多长时间完成,该值可能不太准
6、将CHECKDB拆分成多个步骤完成,CHECKFILEGROUP CHECKALLOC CHECKTABLE
7、在备份机上测试
标签:SQL SERVER您可能感兴趣
- sqlserver代理无法启动错误1607(SQL Server代理:理解SQL代理错误日志处理方法)
- sql server附加数据库出错(SQL Server附加数据库报错无法打开物理文件,操作系统错误5的图文解决教程)
- sqlserver常见函数(SQL Server之JSON 函数详解)
- sql server中的死锁
- sqlserver中根据类型分组(SQL SERVER 分组求和sql语句)
- sqlserver2000显示无服务器(SQL SERVER 2000 9003错误的解决方法只适用于SQL2000)
- sqlserver常用配置调整(sql server性能调优 I/O开销的深入解析)
- sql server中策略管理
- sqlserver2016安装教程(SQL server 2016 安装步骤图文教程)
- SQL Server中SET赋值和SELECT赋值
- sql server中随机函数(SQL SERVER 2012新增函数之逻辑函数IIF)
- sql join速度慢(SQL Server 使用join all优化 or 查询速度)
- sql server 动态建表(SQL Server如何通过创建临时表遍历更新数据详解)
- sqlserver怎么写判断条件(SQL Server之SELECT INTO 和 INSERT INTO SELECT案例详解)
- sqlserver常用数据结构图(Sql Server数据库常用Transact-SQL脚本推荐)
- sql server2008脚本执行(在Sql Server中调用外部EXE执行程序引发的问题)
- 谁说女子不如男 范冰冰演的武则天只是其一,另外两位你认识吗(谁说女子不如男)
- 杯酒人生---瓦伦丁酒杯和奥丁格啤酒(杯酒人生---瓦伦丁酒杯和奥丁格啤酒)
- 中秋节买啤酒,预算超过7元试试这8种啤酒,麦香浓郁都是真啤酒(预算超过7元试试这8种啤酒)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
- SCI检索 SSCI检索 EI检索 ISTP检索 CSCD检索简介(SCI检索SSCI检索EI检索)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9