【MSDN】 SqlServer DBCC解析
汇总学习下SqlServer的DBCC指令。
DBCC:Transact-SQL 编程语言提供 DBCC 语句以作为 SQL Server 的数据库控制台命令。
数据库控制台命令语句可分为以下类别。
命令类别 | 执行 |
维护 | 对数据库、索引或文件组进行维护的任务。 |
杂项 | 杂项任务,如启用跟踪标志或从内存中删除 DLL。 |
信息 | 收集并显示各种类型信息的任务。 |
验证 | 对数据库、表、索引、目录、文件组或数据库页的分配进行的验证操作。 |
三、信息语句:
1、DBCC INPUTBUFFER (返回会话ID最后一次执行的Sql语句)
语法:DBCC INPUTBUFFER ( session_id [ , request_id ])[WITH NO_INFOMSGS ]
参数:
session_id 与各活动主连接关联的会话 ID。
request_id 要在当前会话中精确搜索的请求(批)。
下面的查询返回 request_id:
SELECT request_id
FROM sys.dm_exec_requests
WHERE session_id = @@spid;
WITH
启用要指定的选项。
NO_INFOMSGS
取消严重级别从 0 到 10 的所有信息性消息。
结果集:
列名 | 数据类型 | 说明 |
EventType | nvarchar(30) | 事件类型。 这可能是 RPC 事件或 Language 事件。 检测不到上一个事件时,输出为 No Event。 |
参数 | smallint |
0 = 文本 1- n = Parameters |
EventInfo | nvarchar(4000) | 对于 RPC 的 EventType,EventInfo 仅包含过程名。 对于 Language 的 EventType,仅显示事件的前 4000 个字符。 |
示例:
我们在@@spid=55的窗口敲入Sql代码。
结果输出了我们执行的Sql语句。
2、DBCC SHOWCONTIG(返回索引相关信息)
语法:
DBCC SHOWCONTIG
[ (
{ table_name | table_id | view_name | view_id }
[ , index_name | index_id ]
) ]
[ WITH
{
[ , [ ALL_INDEXES ] ]
[ , [ TABLERESULTS ] ]
[ , [ FAST ] ]
[ , [ ALL_LEVELS ] ]
[ NO_INFOMSGS ]
}
]
参数:
table_name | table_id | view_name | view_id:要检查碎片信息的表或视图。 如果未指定,则检查当前数据库中的所有表和索引视图。 若要获得表或视图 ID,请使用 OBJECT_ID 函数。
index_name |index_id:要检查碎片信息的索引。 如果未指定,则该语句将处理指定表或视图的基本索引。 若要获取索引 ID,请使用 sys.indexes 目录视图。
WITH:指定有关 DBCC 语句返回的信息类型的选项。
FAST:指定是否要对索引执行快速扫描和输出最少信息。 快速扫描不读取索引的叶级或数据级页。
ALL_INDEXES:显示指定表和视图的所有索引的结果,即使指定了特定索引也是如此。
TABLERESULTS:将结果显示为含附加信息的行集。
ALL_LEVELS:仅为保持向后兼容性而保留。 即使指定了 ALL_LEVELS,也只对索引叶级或表数据级进行处理。
NO_INFOMSGS:取消严重级别从 0 到 10 的所有信息性消息。
结果集:
统计信息 | 说明 |
扫描页数(Pages Scanned) | 表或索引中的页数。 |
扫描区数(Extents Scanned) | 表或索引中的区数。 |
区切换次数(Extent Switches) | 遍历表或索引的页时,DBCC 语句从一个区移动到另一个区的次数。 |
Avg. 平均页数(Avg. Pages per Extent) | 页链中每个区的页数。 |
扫描密度 [最佳计数:实际计数](Scan Density [Best Count:Actual Count]) |
百分比。 这是“最佳计数”与“实际计数”的比率。 如果所有内容都是连续的,则该值为 100;如果该值小于 100,则存在一些碎片。 “最佳计数”是指在一切都连续链接的情况下,区更改的理想数目。 “实际计数”是指区更改的实际次数。 |
逻辑扫描碎片(Logical Scan Fragmentation) | 扫描索引的叶级页时返回的出错页的百分比。 此数与堆无关。 对于出错页,分配给索引的下一个物理页不是由当前叶级页中的“下一页”指针所指向的页。 |
区扫描碎片(Extent Scan Fragmentation) | 扫描索引的叶级页时出错区所占的百分比。 此数与堆无关。 对于出错区,包含当前索引页的区在物理上不是包含上一个索引页的区的下一个区。 |
Avg. 平均可用字节数(Avg. Bytes Free per Page) | 扫描的页上平均可用字节数。 此数字越大,则页的填充程度越低。 如果索引不会有很多随机插入,则数字越小越好。 此数字还受行大小影响:行越大,此数字就越大。 |
Avg. 平均密度(全部)(Avg. Page Density (full)) | 页的平均密度,以百分比表示。 该值会考虑行大小。 因此,该值可以更准确地指示页的填充程度。 百分比越大越好。 |
示例:
一些其他用法没有罗列出来,感兴趣的朋友自行查看MSDN,传送门:https://msdn.microsoft.com/zh-cn/library/ms175008(v=sql.120).aspx
3、DBCC OPENTRAN(返回数据库中未提交的事务详情)
语法:
DBCC OPENTRAN
[
( [ database_name | database_id | 0 ] ) ]
{ [ WITH TABLERESULTS ]
[ , [ NO_INFOMSGS ] ]
}
]
参数:
database_name | database_id| 0:显示其中的最早事务信息的数据库名称或 ID。 如果未指定,或者指定为 0,则使用当前数据库。 数据库名称必须符合标识符规则。=
TABLERESULTS:以表格格式指定结果以便可以加载到表中。 使用此选项创建结果表,可以将该结果表插入到表中以进行比较。 未指定此选项时,对结果进行格式化以增加可读性。
NO_INFOMSGS:取消显示所有信息性消息。
示例:
系统中没有未提交的事务,执行DBCC OPENTRAN时,返回下面提醒。
No active open transactions.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
我们创建一个未提交事务,然后执行DBCC OPENTRAN
CREATE TABLE T1(Col1 int, Col2 char(3));
GO
BEGIN TRAN
INSERT INTO T1 VALUES (101, 'abc');
GO
DBCC OPENTRAN;
ROLLBACK TRAN;
GO
DROP TABLE T1;
GO
4、DBCC SQLPERF(返回所有数据库的事务日志空间使用情况)
语法:
DBCC SQLPERF
(
[ LOGSPACE ]
|
[ "sys.dm_os_latch_stats" , CLEAR ]
|
[ "sys.dm_os_wait_stats" , CLEAR ]
)
[WITH NO_INFOMSGS ]
参数:
LOGSPACE:返回事务日志的当前大小和用于每个数据库的日志空间的百分比。 可以使用此信息来监视事务日志中使用的空间量。
"sys.dm_os_latch_stats",CLEAR:重置闩锁统计信息。 有关详细信息,请参阅 sys.dm_os_latch_stats (Transact-SQL)。
"sys.dm_os_wait_stats",CLEAR:重置等待统计信息。 有关详细信息,请参阅 sys.dm_os_wait_stats (Transact-SQL)。
WITH NO_INFOMSGS:取消严重级别从 0 到 10 的所有信息性消息。
结果集:
列名 | 定义 |
Database Name | 数据库名称,为该数据库显示日志统计信息。 |
Log Size (MB) | 分配给日志的当前大小。 该值始终小于最初为日志空间分配的量,因为数据库引擎会保留一小部分磁盘空间,用以存放内部标头信息。 |
Log Space Used (%) | 事务日志信息当前所占用的日志文件的百分比。 |
状态 | 日志文件的状态。 始终为 0。 |
示例:
5、DBCC OUTPUTBUFFER(以十六进制和 ASCII 格式返回指定 session_id 的当前输出缓冲区)
语法:
DBCC OUTPUTBUFFER ( session_id [ , request_id ])
[ WITH NO_INFOMSGS ]
参数:
session_id:与各活动主连接关联的会话 ID。
request_id:要在当前会话中搜索的精确请求(批)。
下面的查询返回 request_id:SELECT request_id FROM sys.dm_exec_requests WHERE session_id = @@spid;
WITH:允许指定其他选项。
NO_INFOMSGS:取消严重级别从 0 到 10 的所有信息性消息。
示例:
6、DBCC TRACESTATUS(显示跟踪标志的状态)
语法:
DBCC TRACESTATUS ( [ [ trace# [ ,...n ] ] [ , ] [ -1 ] ] )
[ WITH NO_INFOMSGS ]
参数:
trace#:将要显示其状态的跟踪标志的编号。 如果未指定 trace# 和 -1,则显示针对会话启用的所有跟踪标志。
n:表示可指定多个跟踪标志的占位符。
-1:显示全局启用的跟踪标志的状态。 如果指定 -1 而未指定 trace#,则显示所有启用的全局跟踪标志。
WITH NO_INFOMSGS:取消显示严重级别从 0 到 10 的所有信息性消息。
结果集:
列名 | 说明 |
TraceFlag | 跟踪标志的名称 |
状态 |
表示跟踪标志是设置为 ON 还是 OFF,是全局启用的还是针对会话启用的。 1 = ON 0 = OFF |
Global |
表示跟踪标志是否是全局设置的 1 = True 0 = False |
Session |
表示跟踪标志是否是针对会话设置的 1 = True 0 = False |
示例:
7、
【MSDN】 SqlServer DBCC解析的更多相关文章
- SQLSERVER DBCC命令大全
DBCC DROPCLEANBUFFERS:从缓冲池中删除所有缓存,清除缓冲区 在进行测试时,使用这个命令可以从SQLSERVER的数据缓存data cache(buffer)清除所有的测试数据,以保 ...
- 【SqlServer】解析SqlServer中的事务
目录结构: contents structure [+] 事务是什么 控制事务 数据并发访问产生的影响 事务的隔离级别 锁 NOLOCK.HOLDLOCK.UPDLOCK 死锁分析 在这篇Blog中, ...
- [转]在SqlServer 中解析JSON数据
在Sqlserver中可以直接处理Xml格式的数据,但因为项目需要所以要保存JSON格式的数据到Sqlserver中在博客:Consuming JSON Strings in SQL Server ...
- SqlServer 2005升级至SqlServer 2008 解析Json 字符集问题
如果你数据库是通过sqlserver 2008以上版本创建的请绕过: 客户以前用的是sqlserver2005 创建的数据库.后来升级到 sqlserver 2008 . 有个业务用到了json查询 ...
- 【SqlServer】解析SqlServer的分页
方式1: 假设页数是10,现在要拿出第5页的内容,查询语句如下: --10代表分页的大小 * from test where id not in ( --40是这么计算出来的:10*(5-1) id ...
- 在SqlServer 中解析JSON数据 [parseJSON] 函数 数据库中 解析JSON
使用如下: SELECT * FROM parseJSON('{ "联系人": { "姓名": "huang", "网名" ...
- SQLSERVER SQL性能优化
1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving ta ...
- SQLSERVER SQL性能优化技巧
这篇文章主要介绍了SQLSERVER SQL性能优化技巧,需要的朋友可以参考下 1.选择最有效率的表名顺序(只在基于规则的优化器中有效) SQLSERVER的解析器按照从右到左的顺序处理F ...
- 在论坛中出现的比较难的sql问题:18(字符合并 整数解析星期几)
原文:在论坛中出现的比较难的sql问题:18(字符合并 整数解析星期几) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...
随机推荐
- soapui
webservice 的请求可使用工具:soapui 天气预报的接口地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsd ...
- mysql主从服务器
#mysql主从服务器 mysql-bin.003673 | 106 查看错误日志show variables like '%log_error%'; replicate-do-table=testm ...
- [Swift]八大排序算法(二):快速排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- Python实现——一元线性回归(最小二乘法)
2019/3/24 线性回归--最小二乘法公式法 暂时用python成功做出来了图像,但是其中涉及到的公式还是更多的来自于网络,尤其是最小二乘法公式中的两个系数的求解,不过目前看了下书高数也会马上提及 ...
- audio.play dom对象 JQ不支持play
*/ PausePlayVoice:function() { $("#spPauseAudio").click(function() { ...
- 什么是redis?Reids的特点是什么?Redis支持的数据类型有哪些?
首先,分布式缓存框架 可以 看成是nosql的一种 (1)什么是redis? redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) (2)Reids的 ...
- FTP 两种连接模式
简介 FTP协议要用到两个TCP连接, 一个是命令连接,用来在FTP客户端与服务器之间传递命令:另一个是数据连接,用来上传或下载数据.通常21端口是命令端口,20端口是数据端口.当混入主动/被动模式的 ...
- python之模块引入
模块引入就是我们经常见到的import xxxx以及from xxx import xxx两种形式.无论是哪一种方式,都要具体到模块名.下面分别看一下两种区别: 1. import import 后面 ...
- 洛谷 P2515 [HAOI2010]软件安装(缩点+树形dp)
题面 luogu 题解 缩点+树形dp 依赖关系可以看作有向边 因为有环,先缩点 缩点后,有可能图不联通. 我们可以新建一个结点连接每个联通块. 然后就是树形dp了 Code #include< ...
- Trailing Loves (or L'oeufs?)
The number "zero" is called "love" (or "l'oeuf" to be precise, literal ...