DBCC SQLMGRSTATS

用于产生3个不同的值,这些值用在你想查看高速缓存在ad-hoc和预编译的TSQL语句中是如何工作的

Memory Used(8K Pages):若内存页的数量非常大,这也许表明一些用户连接正在预处理许多T-SQL语句。

Number CSql Objects:表明已经在高速缓存中的T-SQL的语句的总数

Number False Hits:有时,当sql server匹配在高速缓存中已经存在的T-SQL语句时会出现错误的命中。在理想的情况下,这个数字应该尽可能地小。

DBCC MEMORYSTATUS

列出各项SQL Server内存缓存区的使用情况。

返回了大量的有关内存方面的信息,在动态性能视图sys.dm_os_memory_clerks中有类似的信息。

DBCC PROCCACHE

显示过程的执行计划高速缓存的使用情况。

DBCC FREEPROCCACHE

删除计划缓存中的所有元素,通过指定计划句柄或 SQL 句柄从计划缓存中删除特定计划,或者删除与指定资源池相关联的所有缓存条目。

DBCC FREEPROCCACHE [ ( { plan_handle | sql_handle | pool_name } ) ] [ WITH NO_INFOMSGS ]

参数

( { plan_handle | sql_handle |pool_name } )

plan_handle 用于唯一标识已执行并且其计划驻留在计划缓存中的批处理的查询计划。plan_handle 的数据类型为varbinary(64),可从下列动态管理对象中获得此参数:

  • sys.dm_exec_cached_plans
  • sys.dm_exec_requests
  • sys.dm_exec_query_memory_grants
  • sys.dm_exec_query_stats

sql_handle 是要清除的批处理的 SQL 句柄。sql_handle 的数据类型为varbinary(64),可从下列动态管理对象中获得此参数:

  • sys.dm_exec_query_stats
  • sys.dm_exec_requests
  • sys.dm_exec_cursors
  • sys.dm_exec_xml_handles
  • sys.dm_exec_query_memory_grants

pool_name 是资源调控器资源池的名称。pool_name 的数据类型为sysname,可通过查询 sys.dm_resource_governor_resource_pools 动态管理视图获得此参数。

若要将资源调控器工作负荷组与资源池相关联,请查询 sys.dm_resource_governor_workload_groups 动态管理视图。有关会话的工作负荷组的信息,请查询 sys.dm_exec_sessions 动态管理视图。

WITH NO_INFOMSGS

禁止显示所有信息性消息。

清除单条缓存计划:

USE AdventureWorks2008R2;
GO
SELECT * FROM Person.Address;
GO
SELECT plan_handle, st.text
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle) AS st
WHERE text LIKE N'SELECT * FROM Person.Address%';
GO

DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
GO
清除所有缓存计划:

DBCC FREEPROCCACHE WITH NO_INFOMSGS;

清除与资源池相关联的所有缓存条目
SELECT * FROM sys.dm_resource_governor_resource_pools;
GO
DBCC FREEPROCCACHE ('default');
GO
 

DBCC FREESYSTEMCACHE

从所有缓存中释放所有未使用的缓存条目。SQL Server 数据库引擎会事先在后台清理未使用的缓存条目,以使内存可用于当前条目。但是,可以使用此命令从所有缓存中或者从指定的资源调控器池缓存中手动删除未使用的条目。

DBCC FREESYSTEMCACHE
( 'ALL' [, pool_name ] )
[WITH
{ [ MARK_IN_USE_FOR_REMOVAL ] , [ NO_INFOMSGS ] }
]

参数

( 'ALL' [, pool_name ] )

ALL 指定所有受支持的缓存。

pool_name 指定资源调控器池缓存。只释放与此池关联的条目。

MARK_IN_USE_FOR_REMOVAL

当不再使用当前使用的条目后,将它们分别从其各自所属的缓存中进行异步释放。当 DBCC FREESYSTEMCACHE WITH MARK_IN_USE_FOR_REMOVAL 执行后,缓存中新创建的条目不会受到影响。

下面的示例说明如何清除专属于某个指定资源调控器资源池的缓存。

-- Clean all the caches with entries specific to the resource pool named "default".
DBCC FREESYSTEMCACHE ('ALL','default');

下面的示例使用 MARK_IN_USE_FOR_REMOVAL 子句,在不再使用条目后将它们从所有当前缓存中释放。

DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;
 
DBCC FREESESSIONCACHE

刷新针对 Microsoft SQL Server 实例执行的分布式查询所使用的分布式查询连接缓存。

DBCC FREESESSIONCACHE [ WITH NO_INFOMSGS ]

以下示例将刷新分布式查询缓存。

USE AdventureWorks2008R2;
GO
DBCC FREESESSIONCACHE WITH NO_INFOMSGS;
GO

DBCC CLEANTABLE

回收表或索引视图中已删除的可变长度列的空间。

DBCC CLEANTABLE
(
{ database_name | database_id | 0 }
, { table_name | table_id | view_name | view_id }
[ , batch_size ]
)
[ WITH NO_INFOMSGS ]

参数

database_name | database_id | 0

要清除的表所在的数据库。如果指定 0,则使用当前数据库。数据库名称必须符合标识符规则。

table_name | table_id |view_name| view_id

要清除的表或索引视图。

batch_size

每个事务处理的行数。如果未指定,或指定为 0,则该语句将在一个事务中处理整个表。

DBCC CLEANTABLE 用于在删除可变长度列之后回收空间。可变长度列可以属于下列数据类型之一:varcharnvarcharvarchar(max)nvarchar(max)varbinaryvarbinary(max)textntextimagesql_variantxml。该命令不回收删除固定长度列后的空间。

如果删除的列存储在行内,则 DBCC CLEANTABLE 将从表的 IN_ROW_DATA 分配单元回收空间。如果列存储在行外,则将根据已删除列的数据类型从 ROW_OVERFLOW_DATA 或 LOB_DATA 分配单元回收空间。如果从 ROW_OVERFLOW_DATA 或 LOB_DATA 页回收空间时产生空页,DBCC CLEANTABLE 将删除该页。有关分配单元和数据类型的详细信息,请参阅表和索引数据结构体系结构。

DBCC CLEANTABLE 作为一个或多个事务运行。如果未指定批大小,则该命令将在一个事务中处理整个表,并在操作过程中以独占方式锁定该表。对于某些大型表,单个事务的长度和所需的日志空间可能太大。如果指定批大小,则该命令将在一系列事务中运行,每个事务包括指定的行数。DBCC CLEANTABLE 不能作为其他事务内的事务运行。

该操作将被完整地记入日志。

系统表或临时表不支持使用 DBCC CLEANTABLE。

DBCC CLEANTABLE (AdventureWorks2008R2,"Production.Document", 0)
WITH NO_INFOMSGS;
GO
 

DBCC DROPCLEANBUFFERS

从缓冲池中删除所有清除缓冲区。
DBCC DROPCLEANBUFFERS [ WITH NO_INFOMSGS ]

此指示符只清掉clean buffer,若希望把dirty buffer的空间也清掉,那么需要先把dirty buffer中的数据写到disk,这可以通过可以执行checkpoint来实现,然后再一起清除掉。

DBCC FLUSHPROCINDB

只清除某一个数据库内被高速缓存的程序,以避免用freeproccache清掉所有程序缓存。

declare @i int

set @i = DB_ID('wcc')

dbcc flushprocindb(@i)

DBCC INPUTBUFFER

显示从客户端发送到 Microsoft SQL Server 实例的最后一个语句。

DBCC OUTPUTBUFFER

以十六进制和 ASCII 格式返回指定 session_id 的当前输出缓冲区。

DBCC CURSORSTATUS

显示游标的统计信息
 
 

一、DBCC 帮助类命令

* DBCC HELP('?')
查询所有的DBCC命令
* DBCC HELP('checktable')
查询指定的DBCC命令的语法说明
* DBCC USEROPTIONS
返回当前连接的活动(设置)的SET选项

二、DBCC 检查验证类命令

* DBCC CHECKALLOG ('数据库名称')
检查指定数据库的磁盘空间分配结构的一致性
* DBCC CHECKCATALOG ('数据库名称')
检查指定数据库的系统表内和系统表间的一致性
* DBCC CHECKCONSTAINTS ('tablename')
检查指定表上的指定约束或所有约束的完整性
* DBCC CHECKDB
检查数据库中的所有对象的分配和结构完整性
* DBCC CHECKFILEGROUP
检查指定文件组中所有表在当前数据库中的分配和结构完整性
* DBCC CHECKTABLE
检查指定表或索引视图的数据、索引及test、ntest和image页的完整性
* DBCC CHECKIDENT
检查指定的当前标识值
* DBCC SQLPERF(UMSSTATS) undocumented in BOL
可以用来检查是否CPU使用达到瓶颈
最关键的一个参考数据num runnable,表明当前有多少个线程再等待运行
如果大于等于2,考虑CPU达到瓶颈

三、DBCC 维护类命令

* DBCC CLEANTABLE ('db_name','table_name')
回收Alter table drop column语句删除可变长度列或text
* DBCC DBREINDEX
重建指定数据库的一个或多个索引
* DBCC INDEXDEFRAG
对表或视图上的索引和非聚集索引进行碎片整理
* DBCC PINTABLE (db_id,object_id)
将表数据驻留在内存中
查看哪些表驻留在内存的方法是:
select objectproperty(object_id('tablename'),'tableispinned')
* DBCC UNPINTABLE (db_id,object_id)
撤消驻留在内存中的表
* DBCC SHRINKDATABASE(db_id,int)
收缩指定数据库的数据文件和日志文件大小
* DBCC SHRINKFILE(file_name,int)
收缩相关数据库的指定数据文件和日志文件大小

四、DBCC 性能调节命令

* DBCC dllname(FREE)
sp_helpextendedproc 查看加载的扩展PROC
在内存中卸载指定的扩展过程动态链接库(dll)
* 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 2000服务器内存中的某个数据库的存储过程缓存内容
* 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)
查看某个数据库使用的事物日志信息
* 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 结果集输出

  许多 DBCC 命令可以产生表格格式的输出(使用 WITH TABLERESULTS 选项)。该信息可装载到表中以便将来使用。以下显示一个示例脚本:

  CREATE TABLE DBCCResult (

  DBCCFlag INT,

  Result INT

  )

  INSERT INTO DBCCResult

  EXEC ('DBCC TRACESTATUS (-1) WITH NO_INFOMSGS')

  SELECT *

  FROM DBCCResult
八、官方使用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 来检查页和记录首部
的物理结构。当硬件导致的错误被置疑时,这个操作将执行快速检查。

在发布,订阅复制时要用服务器实名时可以这样:

select * from sysservers   (可以找到原来服务器的名称)

exec sp_dropserver 'jmsql9'    (删除原来的服务器名)

exec sp_addserver 'jmSQL9' ,LOCAL    (改为新的服务器名)

ALTER DATABASE [jm] SET SINGLE_USER          (改为单用户模式)

DBCC CHECKDB("databasename",REPAIR_REBUILD) WITH TABLOCK    (修复数据库)

DBCC  CHECKTABLE("tablename",repair_rebuild) with tablock  (修复表)

DBCC DBREINDEX ('t_icitem'  ,  '   ')       修复此表所有的索引。

ALTER DATABASE [jm] SET MULTI_USER                    (改为多用户模式)

REPAIR_ALLOW_DATA_LOSS:执行由REPAIR_REBUILD 完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。

REPAIR_FAST 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。

REPAIR_REBUILD 执行由REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引),执行这些修复时不会有丢失数据的危险。

dbcc shrinkdatabase  (jm)      压缩数据库

 
 

DBCC命令的更多相关文章

  1. Sql Server之旅——第五站 确实不得不说的DBCC命令(文后附年会福利)

    今天研发中心办年会,晚上就是各自部门聚餐了,我个人喜欢喝干红,在干红中你可以体味到那种酸甜苦辣...人生何尝不是这样呢???正好 ceo从美国带了干红回来,然后我就顺道开心的过了把瘾....一个字.. ...

  2. 在SQL Server中如何快速查找DBCC命令和语法?

    DBCC命令非常好用,但是命令很多语法就很多,如何快速记忆呢?是否都要背下来.其实不用,只要能知道每个命令的作用并且记住DBCC HELP命令就可以了. --查找所有的DBCC命令 DBCC  HEL ...

  3. Sql Server之旅——第五站 确实不得不说的DBCC命令

    原文:Sql Server之旅--第五站 确实不得不说的DBCC命令 今天研发中心办年会,晚上就是各自部门聚餐了,我个人喜欢喝干红,在干红中你可以体味到那种酸甜苦辣...人生何尝不是这样呢???正好 ...

  4. 2. 跟踪标记 (Trace Flag) 3604, 3605 输出DBCC命令结果

    跟踪标记:3604 功能: 输出DBCC命令返回结果到查询窗口(通常是SSMS窗口),类似print命令的显示效果: 用途: 常用于获取DBCC IND, DBCC PAGE命令的输出结果,因为这2个 ...

  5. SQL Server 2000 ——DBCC命令

    http://blog.163.com/ruifeng_00/blog/static/6904584200971291923462/   一.定义 微软当初从SYBASE将DBCC是作为数据库一致性检 ...

  6. Sql Server中的DBCC命令详细介绍

    一:DBCC 1:什么是DBCC 我不是教学老师,我也说不到没有任何无懈可击的定义,全名:Database Console Commands.顾名思义“数据库控制台命令”,说到“控制台“,我第一反应就 ...

  7. SQLSERVER DBCC命令大全

    DBCC DROPCLEANBUFFERS:从缓冲池中删除所有缓存,清除缓冲区 在进行测试时,使用这个命令可以从SQLSERVER的数据缓存data cache(buffer)清除所有的测试数据,以保 ...

  8. [转帖]SQL Server DBCC命令大全

    SQL Server DBCC命令大全   原文出处:https://www.cnblogs.com/lyhabc/archive/2013/01/19/2867174.html DBCC DROPC ...

  9. SQL Server DBCC命令大全

    原文出处:https://www.cnblogs.com/lyhabc/archive/2013/01/19/2867174.html DBCC DROPCLEANBUFFERS:从缓冲池中删除所有缓 ...

随机推荐

  1. 采用Opserver来监控你的ASP.NET项目系列(一、Opserver监控的简介与平台搭建)

    前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来讲讲如何监控我们的ASP.NET项目. 首先我们来介绍一下,什么是Opserver,它是Stack ...

  2. 大数据学习系列之三 ----- HBase Java Api 图文详解

    版权声明: 作者:虚无境 博客园出处:http://www.cnblogs.com/xuwujing CSDN出处:http://blog.csdn.net/qazwsxpcm 个人博客出处:http ...

  3. 通过ssh訪问NAT网络模式虚拟机里的Linux

    进入 GuestOS : #/sbin/ifconfig 查看 inet addr : 10.0.2.15 然后到 HostOS 去, 看控制面板, 看网络和共享中心的VirtualBox Host- ...

  4. SQL或HQL预编译语句,可以防止SQL注入,可是不能处理%和_特殊字符

    近期项目在做整改,将全部DAO层的直接拼接SQL字符串的代码,转换成使用预编译语句的方式.个人通过写dao层的单元測试,有下面几点收获. dao层代码例如以下 //使用了预编译sql public L ...

  5. java 可变參数列表

    Java SE5加入了可变參数列表特性 參数能够这样定义.(Object-args).可变參数用"..."来定义,args是可变參数的数组.举个样例: package sample ...

  6. 关于python2.7从数据库读取中文显示乱码的问题解决

    #!/usr/bin/env python # _*_ coding:utf-8 _*_ import MySQLdb import sys str = raw_input("please ...

  7. 单行json_ajax

    html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  8. ssm学习(四)--完整的增删改查demo

    上一篇文章简要介绍了将sping mvc加入整个框架,算是完成了ssm的集成.本节继续前面的内容,结合spring mvc做一个简单的增删改查demo. 1.首先,重写一下GeckoList.jsp页 ...

  9. JavaScript 中 闭包 的详解

    闭包是什么 在 JavaScript 中,闭包是一个让人很难弄懂的概念.ECMAScript 中给闭包的定义是:闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量. ...

  10. 2018第一发:记一次【Advanced Installer】打包之旅

    一.前言 2017年最后几天,你们都高高兴兴的跨年,博主还在加班制作.net安装包.因为年前要出来第一版的安装包,所以博主是加班加点啊.本来想用VS自带的制作工具,不过用过的人都知道,真是非常好(to ...