【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问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所以,觉得 ...
随机推荐
- 【转】OracleOraDb11g_home1TNSListener服务启动后又停止了
源地址:https://www.cnblogs.com/Asa-Zhu/p/3819605.html 一.错误描述 登陆PL/SQL Developer登陆本地数据库时先报没有监听程序,查看服务发现O ...
- CF1137E. Train Car Selection(可删堆)
题面 三个操作 1.在当前数列最左端加入\(k\)个初始为\(0\)的数 2.在当前数列最右端加入\(k\)个初始为\(0\)的数 3.将当前数列从左到右第\(i\)个数加上\(b+(i-1)k(b& ...
- LVS解决高并发,大数据量
http://www.360doc.com/content/14/0726/00/11962419_397102114.shtml LVS的全称Linux vitual system,是由目前阿里巴巴 ...
- UML之时序图详解
原文链接:https://blog.csdn.net/fly_zxy/article/details/80911942 什么是时序图 时序图(Sequence Diagram),又名序列图.循序图,是 ...
- MongDB from execCommand not master
count failed: not master{ , "errmsg" : "not master" } at src/mongo/shell/query.j ...
- 【BZOJ4800】[CEOI2015 Day2]世界冰球锦标赛 (折半搜索)
[CEOI2015 Day2]世界冰球锦标赛 题目描述 译自 CEOI2015 Day2 T1「Ice Hockey World Championship」 今年的世界冰球锦标赛在捷克举行.\(Bob ...
- Qt 学习之路 2(49):自定义只读模型
Qt 学习之路 2(49):自定义只读模型 豆子 2013年5月5日 Qt 学习之路 2 18条评论 model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,QListView ...
- php 常用字符集
ASCII 字符集 单字节编码,7位(bits)表示一个字符,共128字符 包含内容 控制字符:回车键.退格.换行键等. 可显示字符:英文大小写字符.阿拉伯数字和西文符号 ANSI 码 ANSI编码 ...
- opencv基本操作
src.convertTo(dst, type, scale, shift) 缩放并转换到另外一种数据类型: dst:目的矩阵 type:需要的输出矩阵类型,或者更明确的,是输出矩阵的深度,如果是负值 ...
- CodeForces 1043D Mysterious Crime 区间合并
题目传送门 题目大意: 给出m个1-n的全排列,问这m个全排列中有几个公共子串. 思路: 首先单个的数字先计算到答案中,有n个. 然后考虑多个数字,如果有两个数字相邻,那么在m个串中必定都能找到这两个 ...