查看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 log 和Allocation 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
查看SQLSERVER内部数据页面的小插件Internals Viewer的更多相关文章
- 三种查看SqlServer中数据物理pge页的方法
1.根据数据记录查看当前记录所在的文件编号.page页.以及在页中的插槽. 示例如下: SELECT top %%physloc%%, sys.fn_physlocFormatter (%%physl ...
- 解剖SQLSERVER 完结篇 关于Internals Viewer源代码
解剖SQLSERVER 完结篇 关于Internals Viewer源代码 大家可能都用过Internals Viewer这个软件 <查看SQLSERVER内部数据页面的小插件Internals ...
- 解剖SQLSERVER 第二篇 对数据页面头进行逆向(译)
解剖SQLSERVER 第二篇 对数据页面头进行逆向(译) http://improve.dk/reverse-engineering-sql-server-page-headers/ 在开发Orc ...
- H5 页面与小程序之间 传递数据
H5 页面与小程序之间 传递数据 小程序里面的 H5页面与小程序之间怎么传递数据 webview与小程序之间的实时通信 webview主动发消息给小程序 webview可以利用jssdk提供的 wx. ...
- 【转】SQLServer内部原理
原文地址:http://twb.iteye.com/blog/182083 在讲SQLSERVER内部原理的之前,我觉得非常有必要向大家介绍一下SQLSERVER的历史. 让我们站在1999年,看看计 ...
- 【转载】如何查看sqlserver客户端的版本号信息
在sqlserver的使用过程中,有时候可能会因为sqlserver版本过低等原因的导致无法附加以及还原数据库,我们可以通过sql server management studio软件的帮助菜单参看到 ...
- WebSocket小插件
一.WebSocket小介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...
- Android桌面小插件——Widget
Android桌面小插件--Widget 效果图 实现 1. 创建Widget类 创建一个Widget类,并实现页面创建的时候,就实现显示时间 package com.kongqw.kqwwidget ...
- c#基础之异常处理及自定义异常 从SQLServer转储数据到MySQL
c#基础之异常处理及自定义异常 一.什么是c#中的异常? 异常是程序运行中发生的错误,异常处理是程序的一部分.c#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说S ...
随机推荐
- 【ArcGIS 10.2新特性】ArcGIS 10.2 for Server常见问题
1.ArcGIS 10.2有无测试版程序? 10.2没有正式的测试版程序,但是我们计划发布两个早期cuts软件给国际经销商.选中的用户和合作伙伴. 2.微软Azure云的ArcGIS forServe ...
- hdu4280(最大流)
传送门:Island Transport 题意:有N个岛屿 M条无向路 每个路有一最大允许的客流量,求从最西的那个岛屿最多能运用多少乘客到最东的那个岛屿. 分析:无向图正反都加弧,权值一样,这题点多, ...
- php 多进程中的信号问题
1.以下代码sleep时间远小于20 <?php // 当子进程退出时,会触发该函数 function sig_handler($sig) { switch($sig) { case SIGCH ...
- HDU 1061 N^N (n的n次方的最后一位)
题目意思: http://acm.hdu.edu.cn/showproblem.php?pid=1061 求N^N的最后一位数. 题目分析: 此题有非常多种方法,主要是中循环节,看自己怎么找了.我的方 ...
- http://www.shengshiyouxi.com
android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) Home启动 ...
- AngularJS是为了克服HTML在构建应用上的不足而设计的
AngularJS中文网:http://www.apjs.net/ 简介 AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构 ...
- cocos2d-x 旅程開始--(实现瓦片地图中的碰撞检測)
转眼隔了一天了,昨天搞了整整一下午加一晚上,楞是没搞定小坦克跟砖头的碰撞检測,带着个问题睡觉甚是难受啊!还好今天弄成功了.只是感觉程序不怎么稳定啊.并且发现自己写的东西让我重写一遍的话我肯定写不出来. ...
- ZTESoft 持续集成 编年史 之 持续集成探索---平台选择
2012 年 7.8 月份,我们逐渐了解了持续集成的概念,同时我们家庭作坊的dailybuild方式不断爆出各种问题,并且已经无法满足日益增长的各种需求. 我们开始探索持续集成的不同实现方式,首先我们 ...
- xamarin跨平台iOS、Android 与Windows
http://xamarin.csdn.net/ Xamarin是一个行动App开发平台,提供跨平台开发能力,开发人员透过Xamarin开发工具与程序语言,即可开发出iOS.Android 与Wind ...
- HDU 4643 GSM 暑期多校联合训练第五场 1001
点击打开链接 我就不说官方题解有多坑了 V图那么高端的玩意儿 被精度坑粗翔了 AC前 AC后 简直不敢相信 只能怪自己没注意题目For the distance d1 and d2, if fabs( ...