利用DBCC PAGE查看SQL Server中的表和索引数据
16:08 2013-01-06 参考http://doc.chinaunix.net/sqlserver/200810/206034.shtml
DBCC PAGE|IND 参数
DBCC PAGE 参数
(
['database name'|database id], --can be the actual name or id of the database
file number, --the file number where the page is found
page number, --the page number within the file
print option=[0|1|2|3] --display option; each option provides differing levels of information
)
DBCC IND 参数
(
['database name'|database id], --the database to use
table name, --the table name to list results
index id, --an index_id from sys.indexes; -1 shows all indexes and IAMs, -2 just show IAMs
)
一、查看表的数据
在系统表sysindexes 的列 first中保存有 filenum,pagenum 的信息(当indid为0或者1), 列first 的数据类型为binary(6), 它是以16进制的形式储的,需要进行转换. 在16进制中,每两个进制数字表示一个字节,并且是逆序排列的. 转换完成,其中前2组数表示该表所在的文件编号; 后4组表示该表所在的页码.
根据sysindexes 中的列first返回表所在的filenum 、pagenum
declare @first binary(6)
select @first=first from sysindexes where id=object_id('fanr_city') and indid in(0,1)
declare @PageNum int
select @PageNum=convert(int,substring(@first,4,1)+substring(@first,3,1)+
substring(@first,2,1)+substring(@first,1,1))
declare @FileNum int
select @FileNum=convert(int,substring(@first,6,1)+substring(@first,5,1))
select @FileNum,@PageNum
通过返回的@FileNum,@PageNum,查看表数据页结构
DBCC TRACEON (3604)
DBCC Page (7,1,227,1)
返回结果如下
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 PAGE: (1:227) BUFFER: BUF @0x03BE8618 bpage = 0x05554000 bhash = 0x00000000 bpageno = (1:227)
bdbid = 7 breferences = 0 bUse1 = 7194
bstat = 0x1c0000b blog = 0x212121bb bnext = 0x00000000 PAGE HEADER: Page @0x05554000 m_pageId = (1:227) m_headerVersion = 1 m_type = 1
m_typeFlagBits = 0x4 m_level = 0 m_flagBits = 0x0
m_objId (AllocUnitId.idObj) = 114 m_indexId (AllocUnitId.idInd) = 256
Metadata: AllocUnitId = 72057594045399040
Metadata: PartitionId = 72057594044350464 Metadata: IndexId = 0
Metadata: ObjectId = 1381579960 m_prevPage = (0:0) m_nextPage = (0:0)
pminlen = 92 m_slotCnt = 0 m_freeCnt = 8096
m_freeData = 96 m_reservedCnt = 0 m_lsn = (71:349:76)
m_xactReserved = 0 m_xdesId = (0:0) m_ghostRecCnt = 0
m_tornBits = 0 Allocation Status GAM (1:2) = ALLOCATED SGAM (1:3) = ALLOCATED
PFS (1:1) = 0x60 MIXED_EXT ALLOCATED 0_PCT_FULL DIFF (1:6) = CHANGED
ML (1:7) = NOT MIN_LOGGED DATA: OFFSET TABLE: DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
二、查看索引的数据
--创建测试表,并添加索引
USE AdventureWorks
SELECT *
INTO dbo.Contacts_index
FROM Person.Contact
CREATE INDEX FullName ON Contacts_index(LastName,FirstName)
DBCC IND(AdventureWorks,Contacts_index,-1)
列PageFID和PagePID分别代表页所在的文件数目和数据在文件内的页数目。IndexID是在sys.indexes之中找到的索引的index_id。PageType表示页的类型,Type=1是数据页,Type=2是索引页,Type=10是保存页本身的IAM页。IndexLevel是按页数时IAM结构的级别。如果 level=0,那么就是索引的叶级别页。
DBCC TRACEON(3604)
DBCC PAGE(AdventureWorks,1,15056,3) WITH TABLERESULTS
DBCC PAGE(AdventureWorks,1,14988,3) WITH TABLERESULTS
以下分别是中间级索引页15056和叶级索引页14988、14989的数据分布情况。索引条目按照索引键的值有序排列
利用DBCC PAGE查看SQL Server中的表和索引数据的更多相关文章
- 快速查看SQL Server 中各表的数据量以及占用空间大小
快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...
- 在SQL SERVER中获取表中的第二条数据
在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...
- 显示 Sql Server 中所有表或表中行的信息
在MSSQL中显示某个数据库中所有表或视图的信息: (以下语句为获取所有表信息,将绿色字"U"替换为"V"则获取所有视图信息.) SELECT sysobjec ...
- Sql Server中判断表、列不存在则创建的方法[转]
一.Sql Server中如何判断表中某列是否存在 首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下: 比如说要判断表A中的字段C是否存在两个方法: 第一种方法 ? ...
- 转:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek
0.参考文献 Table Scan, Index Scan, Index Seek SQL SERVER – Index Seek vs. Index Scan – Diffefence and Us ...
- Sql Server中的表访问方式Table Scan, Index Scan, Index Seek
1.oracle中的表访问方式 在oracle中有表访问方式的说法,访问表中的数据主要通过三种方式进行访问: 全表扫描(full table scan),直接访问数据页,查找满足条件的数据 通过row ...
- SQL Server中多表连接时驱动顺序对性能的影响
本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- 多个程序对sql server中的表进行查询和插入操作导致死锁
最近在做一个项目,是要用多个程序对sql server中的相同的数据库进行操作(查询和插入),所以在开始的时候常会出现死锁问题,后来在网上进行了咨询,发现了一些解决方法,留作大家参考: 并发去操纵一张 ...
- 查看SQL Server中的锁表及解锁
有时候系统很慢,有可能是SQL Server数据库中某些表被锁定 --查看被锁表(需查多几次,有些临时锁很快会自动解锁): SELECT request_session_id AS spid, OBJ ...
随机推荐
- extjs Combobox动态加载数据问题,mode:local 还是remote
var fabircTypeDs = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'province.do' }), reade ...
- 获取文本文件的第N行内容
在PowerShell中,可以通过Get-Content这个cmdlet来获取文本文件的内容.Get-Content将一个文本文件读取到一个数组中,每一个数组元素就是文件的一行内容.比如一个文本文件内 ...
- UVALive 7297 bfs
题意 一个小偷偷到了项链 他想知道自己是否可以逃出去 地图中有一个小偷 一个警察 警察有一条狗 一开始 小偷和警察的移动速度都是1 当警察走到小偷经过过的地方时 警察会有一条狗嗅到小偷的气味并且以2的 ...
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...
- 如何用Apache TCPMon来截获SOAP消息
在WebService服务器和客户机之间会传递SOAP消息,有时我们需要得到这些消息以便调试,而Apache的TCPMon可以帮助我们做到这一点. TCPMon的下载地址在http://ws.apa ...
- nginx高并发优化
一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1. worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu ...
- push to deploy
1.server端 建立裸仓 $ mkdir ~/repo.git $ cd ~/repo.git $ git init --bare 脚本 $ vim ~/repo.git/hooks/post-r ...
- Byte History
https://en.wikipedia.org/wiki/Byte The term byte was coined by Werner Buchholz in July 1956, during ...
- OpenMP并行编程
什么是OpenMP?“OpenMP (Open Multi-Processing) is an application programming interface (API) that support ...
- android ArrayAdapter 如何动态更改数据
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示,使用adpater与listview捆绑后,有时希望在程序使用过程中能动态的更改l ...