16:08 2013-01-06 参考http://doc.chinaunix.net/sqlserver/200810/206034.shtml
DBCC PAGE|IND 参数

  1. DBCC PAGE 参数
  2. (
  3. ['database name'|database id], --can be the actual name or id of the database
  4. file number, --the file number where the page is found
  5. page number, --the page number within the file
  6. print option=[0|1|2|3] --display option; each option provides differing levels of information
  7. )
  8. DBCC IND 参数
  9. (
  10. ['database name'|database id], --the database to use
  11. table name, --the table name to list results
  12. index id, --an index_id from sys.indexes; -1 shows all indexes and IAMs, -2 just show IAMs
  13. )

一、查看表的数据
在系统表sysindexes 的列 first中保存有 filenum,pagenum 的信息(当indid为0或者1), 列first 的数据类型为binary(6), 它是以16进制的形式储的,需要进行转换. 在16进制中,每两个进制数字表示一个字节,并且是逆序排列的. 转换完成,其中前2组数表示该表所在的文件编号; 后4组表示该表所在的页码.
根据sysindexes 中的列first返回表所在的filenum 、pagenum

  1. declare @first binary(6)
  2. select @first=first from sysindexes where id=object_id('fanr_city') and indid in(0,1)
  3. declare @PageNum int
  4. select @PageNum=convert(int,substring(@first,4,1)+substring(@first,3,1)+
  5. substring(@first,2,1)+substring(@first,1,1))
  6. declare @FileNum int
  7. select @FileNum=convert(int,substring(@first,6,1)+substring(@first,5,1))
  8. select @FileNum,@PageNum

通过返回的@FileNum,@PageNum,查看表数据页结构

  1. DBCC TRACEON (3604)
  2. DBCC Page (7,1,227,1)

返回结果如下

  1. DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
  2.  
  3. PAGE: (1:227)
  4.  
  5. BUFFER:
  6.  
  7. BUF @0x03BE8618
  8.  
  9. bpage = 0x05554000 bhash = 0x00000000 bpageno = (1:227)
  10. bdbid = 7 breferences = 0 bUse1 = 7194
  11. bstat = 0x1c0000b blog = 0x212121bb bnext = 0x00000000
  12.  
  13. PAGE HEADER:
  14.  
  15. Page @0x05554000
  16.  
  17. m_pageId = (1:227) m_headerVersion = 1 m_type = 1
  18. m_typeFlagBits = 0x4 m_level = 0 m_flagBits = 0x0
  19. m_objId (AllocUnitId.idObj) = 114 m_indexId (AllocUnitId.idInd) = 256
  20. Metadata: AllocUnitId = 72057594045399040
  21. Metadata: PartitionId = 72057594044350464 Metadata: IndexId = 0
  22. Metadata: ObjectId = 1381579960 m_prevPage = (0:0) m_nextPage = (0:0)
  23. pminlen = 92 m_slotCnt = 0 m_freeCnt = 8096
  24. m_freeData = 96 m_reservedCnt = 0 m_lsn = (71:349:76)
  25. m_xactReserved = 0 m_xdesId = (0:0) m_ghostRecCnt = 0
  26. m_tornBits = 0
  27.  
  28. Allocation Status
  29.  
  30. GAM (1:2) = ALLOCATED SGAM (1:3) = ALLOCATED
  31. PFS (1:1) = 0x60 MIXED_EXT ALLOCATED 0_PCT_FULL DIFF (1:6) = CHANGED
  32. ML (1:7) = NOT MIN_LOGGED
  33.  
  34. DATA:
  35.  
  36. OFFSET TABLE:
  37.  
  38. DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

二、查看索引的数据

  1. --创建测试表,并添加索引
  2. USE AdventureWorks
  3. SELECT *
  4. INTO dbo.Contacts_index
  5. FROM Person.Contact
  6. CREATE INDEX FullName ON Contacts_index(LastName,FirstName)
  7. 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,那么就是索引的叶级别页。

  1. DBCC TRACEON(3604)
  2. DBCC PAGE(AdventureWorks,1,15056,3) WITH TABLERESULTS
  3. DBCC PAGE(AdventureWorks,1,14988,3) WITH TABLERESULTS

以下分别是中间级索引页15056和叶级索引页14988、14989的数据分布情况。索引条目按照索引键的值有序排列

利用DBCC PAGE查看SQL Server中的表和索引数据的更多相关文章

  1. 快速查看SQL Server 中各表的数据量以及占用空间大小

    快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...

  2. 在SQL SERVER中获取表中的第二条数据

    在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...

  3. 显示 Sql Server 中所有表或表中行的信息

    在MSSQL中显示某个数据库中所有表或视图的信息: (以下语句为获取所有表信息,将绿色字"U"替换为"V"则获取所有视图信息.) SELECT sysobjec ...

  4. Sql Server中判断表、列不存在则创建的方法[转]

    一.Sql Server中如何判断表中某列是否存在 首先跟大家分享Sql Server中判断表中某列是否存在的两个方法,方法示例如下: 比如说要判断表A中的字段C是否存在两个方法: 第一种方法  ? ...

  5. 转: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 ...

  6. Sql Server中的表访问方式Table Scan, Index Scan, Index Seek

    1.oracle中的表访问方式 在oracle中有表访问方式的说法,访问表中的数据主要通过三种方式进行访问: 全表扫描(full table scan),直接访问数据页,查找满足条件的数据 通过row ...

  7. SQL Server中多表连接时驱动顺序对性能的影响

    本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...

  8. 多个程序对sql server中的表进行查询和插入操作导致死锁

    最近在做一个项目,是要用多个程序对sql server中的相同的数据库进行操作(查询和插入),所以在开始的时候常会出现死锁问题,后来在网上进行了咨询,发现了一些解决方法,留作大家参考: 并发去操纵一张 ...

  9. 查看SQL Server中的锁表及解锁

    有时候系统很慢,有可能是SQL Server数据库中某些表被锁定 --查看被锁表(需查多几次,有些临时锁很快会自动解锁): SELECT request_session_id AS spid, OBJ ...

随机推荐

  1. 【新产品发布】《GM1001 4~20mA 高精度电流采集模块》

    一.主要特性 1.测量精度高达±0.01%FS±0.002mA: 2.采样电阻仅10欧姆(20mA时压降仅0.2V),对被测系统影响  微乎其微: 3.差分输入,可测量正反电流无需改动硬件,使用方便: ...

  2. php isset() empty() 区别, 判断 变量存在与否神器

    先看PHP手册: bool empty ( mixed $var ) 判断一个变量是否被认为是空的.当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在.如果变量不存在的话,empty ...

  3. Ruby--hash

    --将hash作为js方法 get_page_top_module('<%=@page_type%>', <%=@location_hash.to_json%>);

  4. hiho48 : 欧拉路·一

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho最近在玩一个解密类的游戏,他们需要控制角色在一片原始丛林里面探险,收集道具,并找到最后的宝藏.现在他们控制的 ...

  5. static的作用,this(),super()用法

    1:static{}表示静态代码块:在java虚拟机(jvm)加载该类时,会执行这个代码块一次,静态代码块在new()对象之前就加载了 2: this()与surper()区别:surper()是从子 ...

  6. 五 mybatis的SqlMapConfig.xml详解

    SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE conf ...

  7. Python创建list和按照索引访问list

    Python创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一个list表示:>> ...

  8. APP 上架苹果应用商城

    http://www.360doc.com/content/15/0203/15/19663521_445974056.shtml http://jingyan.baidu.com/article/4 ...

  9. MvcPager分页控件的使用

    1.引入MvcPager.dll(MvcPager分页控件:http://www.webdiyer.com/mvcpager/) 2.后台C# Controller: //Ddemo使用Webdiye ...

  10. docker rabbitmq

    docker run -d --hostname my1 --name dome-rabbit -p 15673:5672 -p 15674:15672 -e RABBITMQ_ERLANG_COOK ...