SQL Server2008存储结构之堆表、行溢出

如何从XenServer恢复误删的虚拟机数据

  返回  

使用Internals Viewer插件查看SQL SERVER内部数据页面

2017/11/5 16:22:01 浏览:

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


使用Internals Viewer插件查看SQL SERVER内部数据页面(2)


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

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

么display transaction log用不了,display transaction log是什么功能

点击“Allocation Map” ,点击之后会弹出 连接对话框,

打开之后会看到如下图

上面几个按钮

选择要查看的数据库

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


使用Internals Viewer插件查看SQL SERVER内部数据页面(3)


buffer pool:看下图

small:调整小方格的大小

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

File Details:看上面那个图

小方格颜色的含义

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

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


使用Internals Viewer插件查看SQL SERVER内部数据页面(4)


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

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

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


使用Internals Viewer插件查看SQL SERVER内部数据页面(5)

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

数据库第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 标记的每个命名空间或限定名均存在对应的一行。


使用Internals Viewer插件查看SQL SERVER内部数据页面(6)


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

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

IAM页面

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


使用Internals Viewer插件查看SQL SERVER内部数据页面(7)


具体页面信息

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


使用Internals Viewer插件查看SQL SERVER内部数据页面(8)

下方显示对应的表数据

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


使用Internals Viewer插件查看SQL SERVER内部数据页面(9)


数据行的结构

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

文章地址: 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这张表他的数据页面在数据库中的分布情况


使用Internals Viewer插件查看SQL SERVER内部数据页面(10)

时间:2014-08-14

软件.NET来编写的



联系我们

济南鉴信DATAHELP服务器数据恢复中心
数据恢复服务热线:0531-62399989
数据恢复服务电话:0531-62399989
公司传真:0531-55575577
数据恢复业务Mail:DATAHELP@163.COM
数据恢复公司地址:济南市山大路157号华强电子世界三楼Q3059,Q3060