找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 7746|回复: 14

[数据库知识] MSSQL数据库损坏的修复命令DBCC简介

[复制链接]
  • 打卡等级:无名新人
  • 打卡总天数:4
  • 打卡月天数:0
  • 打卡总奖励:28
  • 最近打卡:2024-10-28 19:32:18
发表于 2005-6-13 14:55:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
DBCC命令能对数据库进行维护,重点介绍内容:
一、CHECKALLOC  磁盘空间一致性
二、CHECKCATALOG  系统表一致性
三、CHECKCONSTRAINTS约束完整性
四、CHECKDB         结构完整性
五、CHECKTABLE      页的完整性
六、DBREINDEX             索引
七、INDEXDEFRAG   整理索引碎片
八、SHRINKDATABASE    释放空间
九、SHRINKFILE    释放文件空间
十、HELP        语句的语法信息



一、DBCC CHECKALLOC检查指定数据库的磁盘空间分配结构一致性<单用户模式>。
语法
DBCC CHECKALLOC
(‘database_name’[ , NOINDEX<指定不检查非系统表的非聚集索引>|
{REPAIR_ALLOW_DATA_LOSS<同REPAIR_REBUILD但删除已损坏的内容,数据会丢失>
|REPAIR_FAST<进行简单的修复操作,数据不会丢失>
|REPAIR_REBUILD<进行复杂的修复,数据不会丢失>} ])
[WITH{[ALL_ERRORMSGS<显示全部错误信息>|NO_INFOMSGS<不显示错误信息>|][,
[TABLOCK<获取共享表锁> ] ][, [ESTIMATEONLY<显示需要的临时空间tempdb]]}<此四个参数不重要> ]
例:
use ufdata_999_2001
go
ALTER DATABASE ufdata_999_2001 SET SINGLE_USER--SQL7.0下同(sp_dboption 'ufdata_999_2001','single_user', 'true')
go
DBCC CHECKALLOC('ufdata_999_2001 ', REPAIR_REBUILD) with NO_INFOMSGS
go
ALTER DATABASE ufdata_999_2001 SET MULTI_USER--SQL7.0(sp_dboption 'ufdata_999_2001','single_user', 'false')

二、DBCC CHECKCATALOG检查指定数据库中的系统表内及系统表间的一致性。
语法
DBCC CHECKCATALOG ('database_name '’ ) [ WITH NO_INFOMSGS ]
例:DBCC CHECKCATALOG ('ufdata_999_2001 ') with NO_INFOMSGS
三、DBCC CHECKCONSTRAINTS检查指定表上的指定约束或所有约束的完整性。
语法
DBCC CHECKCONSTRAINTS
[( ‘table_name’ | ‘constraint_name’    )][ WITH { ALL_ERRORMSGS
| ALL_CONSTRAINTS<对表上所有启用及禁用的约束进行检查> } ]
例:DBCC CHECKCONSTRAINTS  with  ALL_CONSTRAINTS
四、 DBCC CHECKDB检查指定数据库中的所有对象的分配和结构完整性<单用户模>。
语法
DBCC CHECKDB  
( ‘database_name’  [ , NOINDEX  | REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST |
REPAIR_REBUILD } ]    )   [ WITH { [ ALL_ERRORMSGS ] [ , [ NO_INFOMSGS ] ]
[ , [ TABLOCK ]] [ , [ ESTIMATEONLY ] ]  [ , [ PHYSICAL_ONLY ] ]  }  ]
例:
use ufdata_999_2001
go
ALTER DATABASE ufdata_999_2001 SET SINGLE_USER
DBCC CHECKDB (ufdata_999_2001, REPAIR_REBUILD) with  NO_INFOMSGS
go ALTER DATABASE ufdata_999_2001 SET MULTI_USER
go
五、DBCC CHECKTABLE检查指定表或视图的数据、索引及 text、ntext 和 image 页的完整性<单用户模式>。
语法
DBCC CHECKTABLE
( ‘table_name’ | ‘view_name’ [ , NOINDEX  | index_id|{REPAIR_ALLOW_DATA_LOSS
|REPAIR_FAST | REPAIR_REBUILD } ]  )    [WITH { [ ALL_ERRORMSGS
| NO_INFOMSGS ]    [ , [ TABLOCK ] ] [ , [ ESTIMATEONLY ] ]
[ , [ PHYSICAL_ONLY ] ] } ]
例:
use ufdata_999_2001
go
ALTER DATABASE ufdata_999_2001 SET SINGLE_USER
go
DBCC CHECKTABLE ('code', REPAIR_REBUILD) with  NO_INFOMSGS
go
ALTER DATABASE ufdata_999_2001 SET MULTI_USER

六、DBCC DBREINDEX重建指定数据库中表的一个或多个索引。
语法
DBCC DBREINDEX
(    [ ‘database.owner.table_name’    [ , index_name [ , fillfactor ]] ])   
[ WITH NO_INFOMSGS ]
例:DBCC DBREINDEX  (code) with  NO_INFOMSGS

七、DBCC INDEXDEFRAG整理指定的表或视图的聚集索引和辅助索引碎片。
语法
DBCC INDEXDEFRAG  ( { database_name | database_id | 0 }, { table_name | table_id |
‘view_name’ | view_id }, { index_name | index_id } )    [ WITH NO_INFOMSGS ]
例:DBCC INDEXDEFRAG (ufdata_999_2001,code,ccode_name) with  NO_INFOMSGS

八、DBCC SHRINKDATABASE释放指定数据库中的数据文件空间。
语法(SQL7.0用SHRINKDB)
DBCC SHRINKDATABASE  
( database_name [ , target_percent<释放后数据库文件中所要的剩余可用空间百分比>]
[ , { NOTRUNCATE<据库文件中保留所释放的文件空间>
TRUNCATEONLY<空间释放给操作系统, target_percent无效   )
例:DBCC SHRINKDATABASE (‘ufdata_999_2001’,10)
九、DBCC SHRINKFILE释放相关数据库的指定数据文件或日志文件空间。
语法
DBCC SHRINKFILE   
( { file_name | file_id }{ [ , target_size<是用兆字节表示的所要的文件大小> ] |
[ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ] }  )
例:
USE ufdata_999_2001
SP_HELPFILE –查看数据库有关信息后修改下面的语句后执行即可
Go
DBCC SHRINKFILE (ufmodel, 70)
DBCC SHRINKFILE (ufmodel_log, 7)
GO
十、DBCC HELP返回指定的 DBCC 语句的语法信息。
语法
DBCC HELP ( ‘dbcc_statement’ | @dbcc_statement_var | ‘?’ )
例:
Dbcc help(‘?’)
发表于 2005-12-5 14:32:54 | 显示全部楼层
呵呵,安一个SQL2000来耍一下
发表于 2006-1-17 15:41:52 | 显示全部楼层
没完吧,
发表于 2006-12-24 18:31:14 | 显示全部楼层
太难懂了,实在看不懂啊!也不知有什么有用!
发表于 2006-12-29 11:00:40 | 显示全部楼层
,以后用得到的,非常感谢
发表于 2007-1-15 11:46:26 | 显示全部楼层
以后用得到
发表于 2007-1-30 23:01:54 | 显示全部楼层
留着备用噢,支持
发表于 2007-3-31 17:35:07 | 显示全部楼层
ok ..........................
发表于 2007-11-21 08:21:44 | 显示全部楼层
看不懂!!!!!!!!!!
发表于 2007-11-22 17:49:55 | 显示全部楼层
  好东西先下了收藏吧。。
发表于 2007-11-23 09:47:34 | 显示全部楼层
不错正想找呢,呵呵谢了楼主
发表于 2011-1-4 10:51:11 | 显示全部楼层
先收藏一下,学习
发表于 2013-1-23 15:30:31 | 显示全部楼层
收藏一下,真要好好学习了!
回复 点赞 拍砖

使用道具 举报

发表于 2013-1-23 15:38:55 | 显示全部楼层
很有用!学习!
回复 点赞 拍砖

使用道具 举报

发表于 2013-12-15 13:28:38 | 显示全部楼层
表示看不懂 啊啊啊 啊啊
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-27 17:41 , Processed in 0.051148 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表