sqlserver的DBCC命令使用
DBCC是sqlserver的控制台命令,用于维护保证数据库的一致性。DBCC的联机丛书地址:http://msdn.microsoft.com/zh-cn/library/ms188796
数据库控制台命令语句可分为以下类别。
命令类别 |
执行 |
维护 |
对数据库、索引或文件组进行维护的任务。 |
杂项 |
杂项任务,如启用跟踪标志或从内存中删除 DLL。 |
信息 |
收集并显示各种类型信息的任务。 |
验证 |
对数据库、表、索引、目录、文件组或数据库页的分配进行的验证操作。 |
DBCC 命令使用输入参数并返回值。所有 DBCC 命令参数都可以接受 Unicode 和 DBCS 文字。
信息语句
DBCC INPUTBUFFER:显示从客户端发送到 Microsoft SQL Server 2005 实例的最后一个语句。
格式:DBCC INPUTBUFFER ( session_id [ , request_id ] )[WITH NO_INFOMSGS ]
DBCC OUTPUTBUFFER:以十六进制和 ASCII 格式返回指定session_id 的当前输出缓冲区。
格式:DBCC OUTPUTBUFFER ( session_id [ , request_id ] )[ WITH NO_INFOMSGS ]
DBCC SHOWCONTIG :显示指定的表或视图的数据和索引的碎片信息。
比如:dbcc showcontig('taobaoitem_0003')
DBCC OPENTRAN:如果在指定数据库内存在最早的活动事务和最早的分布式和非分布式复制事务,则显示与之有关的信息。
DBCC SQLPERF:为所有数据库提供事务日志空间用法的统计信息。也可以用于重置等待和闩锁的统计信息。
格式:DBCC SQLPERF ([ LOGSPACE ]| [ "sys.dm_os_latch_stats" , CLEAR ] | [ "sys.dm_os_wait_stats" , CLEAR ]) [WITH NO_INFOMSGS ]
比如:dbcc SQLPERF(LOGSPACE)
dbcc SQLPERF("sys.dm_os_wait_stats",CLEAR)
DBCC TRACESTATUS:显示跟踪标志的状态
DBCC PROCCACHE:以表格格式显示有关过程缓存的信息。
DBCC USEROPTIONS:返回当前连接的活动(设置)的 SET 选项。
DBCC SHOW_STATISTICS:显示指定表上的指定目标的当前分发统计信息。
比如:dbcc show_STATISTICS('taobaoitem_0003','ix_taobaoitem_0003')
验证语句
DBCC CHECKALLOC:检查指定数据库的磁盘空间分配结构的一致性。
比如;DBCC CHECKALLOC('taobao')
DBCC CHECKFILEGROUP:检查当前数据库中指定文件组中的所有表和索引视图的分配和结构完整性。
比如:DBCC CHECKFILEGROUP('taobao3')
DBCC CHECKCATALOG:检查指定数据库内的目录一致性。
比如:DBCC CHECKCATALOG('taobao')
DBCC CHECKIDENT:检查指定表的当前标识值,如有必要,则更改标识值。
比如:DBCC CHECKIDENT('taobaoitem_0003')
DBCC CHECKCONSTRAINTS:检查当前数据库中指定表上的指定约束或所有约束的完整性。
DBCC CHECKTABLE:检查组成表或索引视图的所有页和结构的完整性。
DBCC CHECKDB:通过执行下列操作检查指定数据库中所有对象的逻辑和物理完整性:
- 对数据库运行 DBCC CHECKALLOC。
- 对数据库中的每个表和视图运行 DBCC CHECKTABLE。
- 对数据库运行 DBCC CHECKCATALOG。
- 验证数据库中每个索引视图的内容。
- 验证数据库中的 Service Broker 数据。
维护语句
DBCC CLEANTABLE:回收表或索引视图中已删除的可变长度列的空间。
比如:DBCC cleantable('taobao','taobaoitem_0003')
DBCC INDEXDEFRAG:指定表或视图的索引碎片整理。
比如:DBCC INDEXDEFRAG('taobao','taobaoitem_0003')
Pages Scanned Pages Moved Pages Removed
------------- ----------- -------------
359 346 8
(1 row(s) affected)
DBCC DBREINDEX:对指定数据库中的表重新生成一个或多个索引。
比如:DBCC DBREINDEX('taobaoitem_0003','ix_taobaoitem_0003')
DBCC SHRINKDATABASE:收缩指定数据库中的数据文件和日志文件的大小。
比如:DBCC SHRINKDATABASE('taobao')
DBCC SHRINKFILE (Transact-SQL):收缩当前数据库的指定数据或日志文件的大小
比如:DBCC SHRINKFILE('TaoBao3')
DBCC FREEPROCCACHE:从过程缓存中删除所有元素。
DBCC UPDATEUSAGE:报告目录视图中的页数和行数错误并进行更正。这些错误可能导致sp_spaceused 系统存储过程返回不正确的空间使用报告。
杂项语句
DBCC dllname (FREE):从内存中上载指定的扩展存储过程 DLL。
DBCC HELP:返回指定的 DBCC 命令的语法信息。
比如:DBCC HELP('checkdb')
DBCC FREESESSIONCACHE:刷新针对 Microsoft SQL Server 实例执行的分布式查询所使用的分布式查询连接缓存。
DBCC TRACEON:启用指定的跟踪标记。
格式:DBCC TRACEON ( trace# [ ,...n ][ , -1 ] ) [ WITH NO_INFOMSGS ]
DBCC TRACEOFF:禁用指定的跟踪标记。
DBCC FREESYSTEMCACHE:从所有缓存中释放所有未使用的缓存条目。SQL Server 2005 数据库引擎会事先在后台清理未使用的缓存条目,以使内存可用于当前条目。但是,可以使用此命令从所有缓存中手动删除未使用的条目。
比如;DBCC FREESYSTEMCACHE('all')
数据库维护:索引,文件,空间等的维护
DBCC DBREINDEX
DBCC DBREPAIR
DBCC INDEXDEFRAG
DBCC SHRINKDATABASE
DBCC SHRINKFILE
DBCC UPDATEUSAGE
状态检查:设置,属性,缓存等
DBCC INPUTBUFFER
DBCC OPENTRAN
DBCC OUTPUTBUFFER
DBCC PROCCACHE
DBCC SHOWCONTIG
DBCC SHOW_STATISTICS
DBCC SQLPERF
DBCC TRACESTATUS
DBCC USEROPTIONS
数据库完整性维护
DBCC CHECKALLOC
DBCC CHECKCATALOG
DBCC CHECKCONSTRAINTS
DBCC CHECKDB
DBCC CHECKFILEGROUP
DBCC CHECKIDENT
DBCC CHECKTABLE
DBCC NEWALLOC
其他:
DBCC dllname (FREE)
DBCC HELP
DBCC PINTABLE
DBCC ROWLOCK
DBCC TRACEOFF
DBCC TRACEON
DBCC UNPINTABLE
DBCC DROPCLEANBUFFERS 从缓冲池中删除所有清除缓冲区。
DBCC CacheStats:显示存在于当前buffer Cache中的对象的信息,例如:hit rates,编译的对象和执行计划
DBCC ErrorLog :如果很少重启mssqlserver服务,那么服务器的日志(不是数据库事务日志)会增长得很快,而且打开和查看日志的速度也会很慢
一、DBCC 帮助类命令
DBCC HELP('?') :查询所有的DBCC命令
DBCC HELP('命令') :查询指定的DBCC命令的语法说明
DBCC USEROPTIONS :返回当前连接的活动(设置)的SET选项
二、DBCC 检查验证类命令
DBCC CHECKALLOG ('数据库名称') :检查指定数据库的磁盘空间分配结构的一致性
DBCC CHECKCATALOG ('数据库名称') :检查指定数据库的系统表内和系统表间的一致性
DBCC CHECKCONSTAINTS ('tablename') :检查指定表上的指定约束或所有约束的完整性
DBCC CHECKDB :检查数据库中的所有对象的分配和结构完整性
DBCC CHECKFILEGROUP :检查指定文件组中所有表在当前数据库中的分配和结构完整性
DBCC CHECKTABLE :检查指定表或索引视图的数据、索引及test、ntest和image页的完整性
DBCC CHECKIDENT :如果存在大量数据删除,考虑在删除后,使用 dbcc checkident 重置一下自增值
检查指定的当前标识值
DBCC SQLPERF(UMSSTATS):最关键的一个参考数据num runnable:表明当前有多少个线程再等待运行,如果大于等于2,考虑CPU达到瓶颈
Scheduler ID:当前机器有多少个逻辑CPU就有多少个Scheduler ID,具体怎麽看可以看一下我的这篇文章
三、DBCC 维护类命令
DBCC CLEANTABLE ('db_name','table_name') :回收Alter table drop column语句删除可变长度列或text
DBCC DBREINDEX :重建指定数据库的一个或多个索引 跟ALTER INDEX REBUILD差不多
DBCC INDEXDEFRAG:对表或视图上的索引和非聚集索引进行碎片整理
DBCC PINTABLE (db_id,object_id) :将表数据驻留在内存中
查看哪些表驻留在内存的方法是:0:没有驻留 ,1:驻留
1 USE [GPOSDB] 2 GO 3 SELECT OBJECTPROPERTY(OBJECT_ID('dbo.SystemPara'), 'tableispinned')
DBCC UNPINTABLE (db_id,object_id) :撤消驻留在内存中的表
DBCC SHRINKDATABASE(db_id,int) :收缩指定数据库的数据文件和日志文件大小
DBCC SHRINKFILE(file_name,int):收缩相关数据库的指定数据文件和日志文件大小
四、DBCC 性能调节命令
DBCC dllname(FREE) :在内存中卸载指定的扩展过程动态链接库(dll)
sp_helpextendedproc 查看加载的扩展PROC
DBCC DROPCLEANBUFFERS :从缓冲池中删除所有缓冲区
DBCC FREEPROCCACHE :从执行计划缓冲区删除所有缓存的执行计划
DBCC INPUTBUFFER :显示从客户机发送到服务器的最后一个语句
DBCC OPENTRAN (db_name) :查询某个数据库执行时间最久的事务,由哪个程序拥有
DBCC SHOW_STATISTICS :显示指定表上的指定目标的当前统计信息分布
DBCC SHOWCONTIG :显示指定表的数据和索引的碎片信息
DBCC SQLPERF (logspace) :查看各个DB的日志情况
(iostats) 查看IO情况
(threads) 查看线程消耗情况
返回多种有用的统计信息
DBCC CACHESTATS :显示SQL Server 2000内存的统计信息
DBCC CURSORSTATS :显示SQL Server 2000游标的统计信息
DBCC MEMORYSTATS :显示SQL Server 2000内存是如何细分的
DBCC SQLMGRSTATS :显示缓冲区中先读和预读准备的SQL语句
五、DBCC 未公开的命令
DBCC ERRLOG :初始化SQL Server 2000的错误日志文件
DBCC FLUSHPROCINDB (db_id) :清除SQL Server 2005服务器内存中的某个数据库的存储过程缓存内容
DBCC BUFFER (db_name,object_name,int(缓冲区个数)) :显示缓冲区的头部信息和页面信息
DBCC DBINFO (db_name) :显示数据库的结构信息
DBCC DBTABLE :显示管理数据的表(数据字典)信息
DBCC IND (db_name,table_name,index_id) :查看某个索引使用的页面信息
DBCC REBUILDLOG :重建SQL Server 2000事务日志文件
DBCC LOG (db_name,3) (-1~4) :查看某个数据库的事物日志信息 显示格式可以为:-1,0,1,2,3,4 每个数字代表不同的格式
DBCC PAGE :查看某个数据库数据页面信息
DBCC PROCBUF :显示过程缓冲池中的缓冲区头和存储过程头
DBCC PRTIPAGE :查看某个索引页面的每行指向的页面号
DBCC PSS (user,spid,1) :显示当前连接到SQL Server 2000服务器的进程信息
DBCC RESOURCE :显示服务器当前使用的资源情况
DBCC TAB (db_id,object_id) :显示数据页面的结构
六、DBCC跟踪标记
跟踪标记用于临时设置服务器的特定特征或关闭特定行为,常用于诊断性能问题或调试存储过程或复杂的系统
DBCC TRACEON (3604) :打开跟踪标记
DBCC TRACEOFF :关闭跟踪标记
DBCC TRACESTATS :查看跟踪标记状态
七、官方使用DBCC的建议
1、在系统使用率较低时运行 CHECKDB。
2、请确保未同时执行其它磁盘 I/O 操作,例如磁盘备份。
3、将 tempdb 放到单独的磁盘系统或快速磁盘子系统中。
4、允许 tempdb 在驱动器上有足够的扩展空间。 使用带有 ESTIMATE ONLY 的 DBCC 估计 tempdb 将需要多少空间。
5、避免运行占用大量 CPU 的查询或批处理作业。
6、在 DBCC 命令运行时,减少活动事务。
7、使用 NO_INFOMSGS 选项减少一些信息的输出。
8、考虑使用带有 PHYSICAL_ONLY 选项的 DBCC CHECKDB 来检查页和记录的物理结构。
PHYSICAL_ONLY 选项:只检查物理错误,不检查逻辑错误
物理错误比逻辑出更严重,因为物理错误一般SQLSERVER都不能修复的,而逻辑错误大部分SQLSERVER都可以修复