查看SQLSERVER内部数据页面的小插件Internals Viewer

原文:查看SQLSERVER内部数据页面的小插件Internals Viewer

查看SQLSERVER内部数据页面的小插件Internals Viewer

感觉internals viewer这个名字起得很好,内部查看。

这个小工具是我之前看园子里的某大侠转载的文章是看到的

文章地址:
SQL Server2008存储结构之堆表、行溢出

http://www.cnblogs.com/trams/archive/2010/09/11/1823727.html

这几天研究了一下这个小工具,发现挺好用的,对入想深入研究或者刚刚学SQLSERVER但是想对SQL有更深入了解的朋友们特别有用



先给出下载地址,这个是codeplex上的一个项目:

http://internalsviewer.codeplex.com/

我也上传到了自己的网盘,大家也可以到我的网盘下载:http://www.kuaipan.cn/file/id_4401224786924003.htm

InternalsViewerInstaller.msi 安装就不说了,直接双击安装,安装前最好先关闭SSMS

官方上说:可以用在SQL2005 SQL2008  ,我自己的电脑是SQL2005 Windows7可以使用

下载安装好之后,再打开SSMS,会看到SSMS的菜单增加了一个

点击Internals Viewer会有两个菜单:display transaction logAllocation Map

不知道为什么display transaction log用不了,本人非常想知道display transaction log是什么功能

只好点击“Allocation Map” ,点击之后会弹出 连接对话框,大家选择验证方式连接就可以了不多说了



打开之后会看到如下图

上面几个按钮

选择要查看的数据库

PFS:查看数据库的空闲页面情况

buffer pool:看下图

small:调整小方格的大小

key:是否显示数据库的表,如果不点击key下面不会显示表的

File Details:看上面那个图



小方格颜色的含义

点击某个小方格就会显示那个小方格的信息,每个小方格代表一个页面

小方格的颜色是跟下面表格的颜色是一一对应的,表示这些表格数据在数据库中的分布情况

鼠标在小方格上移动会看到这个小方格属于哪个表

 鼠标左键单击某个小方格会显示这个页面的信息

如果你想看某个表的数据,你可以点击那个表,然后就会显示出那个表的数据分布情况,你点击某个小方格就可以看到那个表的数据了~



先从数据库的开头几个页面说起吧

数据库第1页:file header page

数据库第2页:PFS  (Page Free Space) ,也叫页面自由空间,该页面用来跟踪一个文件中每一个特定页面的利用率情况

数据库第3页:GAM 全局分配映射(Global Allocation Map,GAM)页面  这些页面记录了哪些区已经被分配并用作何种用途

数据库第4页:SGAM 共享全局分配映射(Shared Global Allocation Map,SGAM)页面  这些页面记录了哪些区当前被用作混合类型的区,并且这些区需含有至少一个未使用的页面

第5页没有数据

第6页没有数据

数据库第7页:DCM 差异变更(Differential Changed Map,DCM)页面 他跟踪一个文件中的哪一个区在最新一次完整数据库备份之后被修改过。SQLSERVER
用在增量备份时只对已发生数据变更的分区进行增量备份即可

资料:SQL Server 2008 存储结构之DCM、BCM

数据库第8页:BCM 批量更改映射(Bulk Changed Map)页面,该页面当文件中的一个区在最小量或批量日志操作中被
使用时用到。

数据库第9页:sys.sysqnames 存在于每个数据库中。

4 字节 ID 标记的每个命名空间或限定名均存在对应的一行。

像dbcc checkprimaryfile命令的信息应该就存储于这个页面中

数据库第10页:boot page 数据库根据这个页面的信息来启动的



IAM页面

下面那里写错了,应该是堆表才有



具体页面信息

每个小方格代表一个页面,左边这些信息估计是使用了这两条语句:DBCC IND()   DBCC PAGE()

 下方显示对应的表数据

左上角显示了这个页面是数据页还是IAM页



数据行的结构

关于数据行的结构,大家可以看文章最开始给出的

文章地址: SQL Server2008存储结构之堆表、行溢出

http://www.cnblogs.com/trams/archive/2010/09/11/1823727.html

我摘抄一部分

其中状态A为如下说明:
 
  bit0:版本信息,在SQL Server 2005/08总是为0
 
  bit1-3: 0=(primary record);1=(forwarded record);2=(forwarding stud);3=(index record);4=(溢出数据);5=(ghost索引记录);6=(ghost数据记录)
 
  bit4:表示存在NULL位图(在数据行里SQL2005/08总存在NULL位图)
 
  bit5:表示存在变长列
 
  bit6:未启用
 
  bit7:表示存在幽灵记录
 
  本例中30->00110000 它是一个行属性的位图 从高位存到低位(右边第一位是bit0),bit4为1即存在变长列的字段,因为在SQLServer2005/2008中总存在NULL位图,所以bit5也为1。
 
  状态位B在SQLServer2005//2008中未启用,所以为00



IAM页和数据页的差别

堆表只依靠表里的IAM页(索引分配映射页)将堆的页面联系在一起,IAM里记录了页面编号,页面位置

红色的小方格就是记录了sys.syscolpars这张表他的数据页面在数据库中的分布情况



关于这个软件

我点击了一下IAM页面下方的小方格就报错了,然后弹出一个对话框,原来这个软件使用.NET来编写的

我们国人什么时候也能够写一个呢?

----------------------------------------------------------------------------------------------------

最后附上各个系统页面的作用和详细介绍地址

PFS页面介绍:  http://dev.21tx.com/2011/11/24/11378.html
DCM BCM页面介绍:  http://tech.it168.com/a2010/0921/1106/000001106857.shtml
GAM SGAM页面介绍:http://www.efficient-it.com.cn/space/78/viewspace/itemid/6756.html

时间: 2024-08-19 06:04:23

查看SQLSERVER内部数据页面的小插件Internals Viewer的相关文章

解剖SQLSERVER 完结篇 关于Internals Viewer源代码

原文:解剖SQLSERVER 完结篇 关于Internals Viewer源代码 解剖SQLSERVER 完结篇 关于Internals Viewer源代码 大家可能都用过Internals Viewer这个软件 <查看SQLSERVER内部数据页面的小插件Internals Viewer> 但是不知道有多少人看过他的源代码呢? 作者把源代码放在在CodePlex网站上面,但是这个源代码只支持SQL2008及以下,不支持SQL2008R2 后来有人根据原作者的代码改写出了 SQL2008R2版

解剖SQLSERVER 第二篇 对数据页面头进行逆向(译)

解剖SQLSERVER 第二篇  对数据页面头进行逆向(译) http://improve.dk/reverse-engineering-sql-server-page-headers/ 在开发OrcaMDF 的时候第一个挑战就是解析数据页面头部,我们知道数据页面分两部分,96字节的页面头部和8096字节的数据行 大神 Paul Randal 写了一篇文章很好的描述了页头结构,然而,即使文章描述得很详细,但是我还是找不出任何关于页头存储的格式 每一个字段的数据类型和他们的顺序 我们可以使用DBC

从Apache的日志文件收集和提供统计数据(一个Python插件架构的简单实现)

从Apache的日志文件收集和提供统计数据 这一章我们将介绍基于插件程序的架构和实现.作为例子,我们将构建一个分析Apache服务器log文件的框架.这一次我们不再使用单片机的方式来创建,而是改为采用模块化的方式.一旦我们有了一个基本框架,我们就可以为它创建一个插件.这个插件可以基于请求者的地理位置执行分析. 程序的结构和功能 在数据维护和统计收集领域,很难有一个单一的应用程序可以适合多个用户的需求.让我们以分析Apache的web服务器日志文件为例.web服务器接受到的每一个请求都被记录在日志

页面构建小工具---转载

我们将在本文中介绍一些关于页面构建常用的一些小工具,大部分是基于firefox的插件,通过这些小工具可以让我们在页面构建中事半功倍. 页面bug调试工具–Firebug 实时测量工具–Measureit 实时颜色选取工具–Colorzilla SEO优化工具–SenSEO CSS使用效率优化工具–CSS usage 网页截图存储工具–Pearl crescent page saver basic HTML页面与设计稿比对工具–Pixel perfect 本地调试页面样式利器–Fiddler DN

JS小插件之1——pager 分页

学习JS大半年之久,第一次自己尝试写一些小插件,写法参考网上某位牛人写代码的思路. 此处代码写的是静态分页.如果需动态分页,还可以修改下.第一次写,还有很多地方可以优化.希望各位大牛踊跃拍砖. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" Content="text/html; charset=utf-8;"> 5 <t

谷歌浏览器修改cookie访问网页的小插件——EditsThisCookie

cookie是服务器用来区分不同的浏览器客户端的,比如学生A和B同一时段用各自的电脑访问学校访问学校的教务系统查看成绩,登录之后,访问同一页面确出来不同的信息,并且不能查看对方的信息,这就是因为服务器用利用cookie把每个人区分开了. 在登录后,服务器会给你发送一段cookie,浏览器会把这cookie保存下来,然后访问服务器的时候把这段cookie也发送给服务器,服务器根据不同的cookie区分不同的人.cookie以键值对的形式存在,也就是说他是一些键值对. 你如果知道了别人登录后的coo

翻译之:数据页面和数据行

数据页面和数据行 数据库中的空间分为逻辑8KB页面. 这些页面从零开始连续编号,可以通过指定文件ID和页码来引用它们. 页面编号始终是连续的,这样当SQL Server增长数据库文件时,新页面将从文件中的最高页码加1开始编号. 同样,当SQL Server收缩文件时,它会从文件中删除编号最大的页面. SQL SERVER中的数据存储 一般来说,SQL Server存储和处理数据库中的数据有三种不同的方式或技术. 使用经典的基于行的存储,数据存储在数据行中,这些数据行将来自所有列的数据组合在一起.

VALIDFORM前端小插件实现表单验证;

好开心啊,有了这个小插件就不用在服务器端去写用户输入的东西是否合法,又美观: 这个是官网,使用入门那儿很简单,不如直接改demo; 下载的demo就是这个: 小李子(永奇商城注册页面表单验证): 就是这个,那个邮箱正则验证效果如何加上去的呢: 看demo就知道(把demo里面之中整个demo文件夹拷贝在项目之中,将css之中validform必须的留下,其他删除掉,也就是demo文件夹里面/*==========以下部分是Validform必须的===========*/这一行字下面的css样式

浮动【电梯】或【回到顶部】小插件:iElevator.js

iElevator.js 是一个jquery小插件,使用简单,兼容IE6,支持UMD和3种配置方式,比锚点更灵活. Default Options _defaults = { floors: null, btns: null, backtop: null, selected: '', sticky: -1, visible: { isHide: 'no', numShow: 0 }, speed: 400, show: function(me) { me.element.show(); }, h