标签归档:DBCC

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

mssql sqlserver DBCC CHECKCONSTRAINTS 关键字用法简介


摘要:
下文讲述 DBCC CHECKCONSTRAINTS功能描述及举例说明
实验环境:sql server 2008 R2



一、DBCC CHECKCONSTRAINTS 关键字简介

DBCC CHECKCONSTRAINTS 功能说明:
CHECKCONSTRAINTS应用于检查当前数据库的指定表上的约束完整性,或整个数据库上的约束完整性
此约束检查包括对(外键约束和指定的check约束)
运行此命令,需要拥有sysadmin权限
—————————————————————
DBCC CHECKCONSTRAINTS 语法说明:
DBCC CHECKCONSTRAINTS
[
(table_name | table_id | constraint_name | constraint_id)
]
[ WITH
[ { ALL_CONSTRAINTS | ALL_ERRORMSGS } ]
[ , ] [ NO_INFOMSGS ]
]
——————————参数说明————————-
table_name | table_id | constraint_name | constraint_id:
分为为 表名 表名ID 约束名 约束名iD
如果此参数未指定,则检查整个数据库上表的约束完整性
ALL_CONSTRAINTS:
如果此参数指定,则检查表或数据库上所有约束(启用和禁用),否则只对已启用的约束进行检查,如果指定了约束名,则此参数无任何作用。
ALL_ERRORMSGS:
返回违反约束的所有行,此参数缺省则只返回前200行
NO_INFOMSGS:
取消所有信息性消息

返回值说明:
Table Name:违反约束的表名称
Constraint Name:约束名称
Where:约束所对应的where条件信息,可定位至相应的数据



二、DBCC CHECKCONSTRAINTS 关键字举例说明

 CREATE TABLE test (keyId int, info char (30));  
GO  
INSERT INTO test VALUES (888, 'testInformation');  
GO  
ALTER TABLE test WITH NOCHECK ADD CONSTRAINT chkTest CHECK (keyId > 8880);  
GO  
DBCC CHECKCONSTRAINTS(test);  
GO  

truncate table test 
drop table test 
 -----------------------------------------
DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;    ---检查整个数据库的约束
GO  
mssql_sqlserver_DBCC_CHECKCONSTRAINTS用法说明

mssql_sqlserver_DBCC_CHECKCONSTRAINTS用法说明

mssql sqlserver DBCC CHECKCATALOG控制台管理命令用法简介


摘要:
下文讲述DBCC CHECKCATALOG 目录一致性命令的用法简介及说明,如下所示:
实验环境:sqlserver 2008 R2



一、DBCC CHECKCATALOG 命令功能说明

核查指定数据库中系统表之间的一致性。
——————————————————
DBCC CHECKCATALOG 语法说明:
DBCC CHECKCATALOG
( database_name | database_id | 0
) [ WITH NO_INFOMSGS ]
——————————————————
参数说明:
database_name | database_id | 0 :
指定数据库名称或数据库ID,缺省参数代表当前数据库
WITH NO_INFOMSGS:
取消显示所有信息性消息,此参数如果未指定,则会显示所有错误消息

注意事项:
1 DBCC CHECKCATALOG命令对syscolumns 中数据类型同systypes中数据类型进行匹配性检查
2 DBCC CHECKCATALOG命令对sysobjects中的表和视图是否存在一列于syscolumns进行检查
3 对tempdb数据库执行CHECKCATALOG命令,将不会进行任何检查操作
4 DBCC CHECKDB命令包含CHECKCATALOG功能,此命令属于CHECKDB命令的一部分
运行此命令需拥有sysadmin角色权限
—————————–错误信息说明—————————
错误号 描述
0 出现错误号 8930。 这指示导致 DBCC 命令终止的元数据损坏。
@shouldalert 出现错误号 8967。 存在一个内部 DBCC 错误。
2 在紧急模式数据库修复过程中出错。
3 这指示导致 DBCC 命令终止的元数据损坏。
4 检测到断定或访问违规。
5 出现终止了 DBCC 命令的未知错误。



二、DBCC CHECKCATALOG 命令举例说明

 DBCC CHECKCATALOG ---对当前数据库进行一致性检查
 go

 DBCC CHECKATALOG('pubs') ---对数据库pubs进行一致性检查