创建测试表

Use Test

create table dbo.employee(
emp_lname varchar(12) not null,
emp_fname varchar(12)not null,
address varchar(30)not null,
phone char(12) not null,
job_level smallint not null
)

从以下视图中获取页的地址信息

SELECT object_name(object_id) as name,
rows,type_desc as page_type_desc,total_pages as Pages,first_page
FROM sys.partitions p
join sys.system_internals_allocation_units a
on p.partition_id = a.container_id
where P.object_id = object_id('dbo.employee')

创建通过页地址获取页ID

CREATE FUNCTION convert_page_nums(@page_num binary(6))
RETURNS VARCHAR(11)
AS
BEGIN
RETURN(
CONVERT(VARCHAR(2),(
CONVERT(INT,SUBSTRING(@page_num,6,1))* POWER(2,8)
) +
(CONVERT(INT,SUBSTRING(@page_num,5,1)))
) + ':' +
CONVERT(VARCHAR(11),
(CONVERT(INT,SUBSTRING(@page_num,4,1)) * POWER(2,24)) +
(CONVERT(INT,SUBSTRING(@page_num,3,1)) * POWER(2,16)) +
(CONVERT(INT,SUBSTRING(@page_num,2,1)) * POWER(2,8)) +
(CONVERT(INT,SUBSTRING(@page_num,1,1)))
)
)
END

将上部得到的first_page  当参数传入

select [dbo].[convert_page_nums](0x970000000100)

得到结果:1:151

还有一种方法得到PageID

dbcc ind(Test,employee, -1)

根据PageID找出页中的详细信息

dbcc traceon(3604)
dbcc page (Test,1,151,1)

结果分四个段落:Buffer, Page Header, Data 和 Offset Table (真正的偏移矩阵)。Buffer段落显示了给定页面的缓冲信息。在此Buffer时指一中内存中的结构,用于管理页面,此段的信息仅当该页面处于内存中才有意义。

显示结果:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

PAGE: (1:151)

BUFFER:

BUF @0x0000000085FA7680

bpage = 0x000000008513C000 bhash = 0x0000000000000000 bpageno = (1:151)
bdbid = 15 breferences = 0 bcputicks = 0
bsampleCount = 0 bUse1 = 41047 bstat = 0xc0000b
blog = 0x32159bb bnext = 0x0000000000000000

PAGE HEADER:

Page @0x000000008513C000

m_pageId = (1:151) m_headerVersion = 1 m_type = 1
m_typeFlagBits = 0x4 m_level = 0 m_flagBits = 0x8000
m_objId (AllocUnitId.idObj) = 36 m_indexId (AllocUnitId.idInd) = 256
Metadata: AllocUnitId = 72057594040287232
Metadata: PartitionId = 72057594039238656 Metadata: IndexId = 0
Metadata: ObjectId = 261575970 m_prevPage = (0:0) m_nextPage = (0:0)
pminlen = 18 m_slotCnt = 1 m_freeCnt = 8062
m_freeData = 128 m_reservedCnt = 0 m_lsn = (21:480:20)
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) = 0x61 MIXED_EXT ALLOCATED 50_PCT_FULL DIFF (1:6) = CHANGED
ML (1:7) = NOT MIN_LOGGED

DATA:

Slot 0, Offset 0x60, Length 32, DumpStyle BYTE

Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP VARIABLE_COLUMNS
Record Size = 32
Memory Dump @0x000000001023A060

0000000000000000: 30001200 64202020 20202020 20202020 †0...d
0000000000000010: 01000500 0003001e 001f0020 00616263 †........... .abc

OFFSET TABLE:

Row - Offset
0 (0x0) - 96 (0x60)

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

SQL Server 查看物理页存储的更多相关文章

  1. SQL Server 堆表行存储大小(Record Size)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 堆表行记录存储格式(Heap) 案例分析(Case) 参考文献(References) 二.背 ...

  2. SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>

    一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...

  3. SQL Server 深入解析索引存储(下)

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/非聚集索引 概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非 ...

  4. SQL Server 深入解析索引存储(中)

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/堆 概述 本篇文章是关于堆的存储结构.堆是不含聚集索引的表(所以只有非聚集索引的表也是堆).堆的 sys.parti ...

  5. SQL Server 表和索引存储结构

    在上一篇文章中,我们介绍了SQL Server数据文件的页面类型,系统通过96个字节的头部信息和系统表从逻辑层面上将表的存储结构管理起来,具体到表的存储结构上,SQL Server引入对象.分区.堆或 ...

  6. SQL Server 深入解析索引存储(非聚集索引)

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/非聚集索引 概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非 ...

  7. SQL Server 深入解析索引存储(堆)

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/堆 概述 本篇文章是关于堆的存储结构.堆是不含聚集索引的表(所以只有非聚集索引的表也是堆).堆的 sys.parti ...

  8. SQL SERVER 查看mdf ldf文件路径

    SQL SERVER 查看mdf ldf文件路径 select filename from sysfiles

  9. sql server 查看对象最后修改时间

    sql server 查看对象最后修改时间,根据最后修改时间排序 存储过程 SELECT * FROM sys.all_objects WHERE  TYPE='P' ORDER BY modify_ ...

随机推荐

  1. 微信公众平台开发教程(八)Session处理

    微信公众平台开发教程(八)Session处理 在微信窗口,输入的信息有限,我们需要将一些信息分多次请求. 比如:在进行用户绑定时,我们需要输入用户的相关信息,比如:用户名.密码,或者姓名.电话号码,服 ...

  2. PHP安装所最到的问题-解决方案

    Although Drupals 7+ run smoothly on PHP 5.3, Drupal 6 still feels much better with PHP 5.2. Even tho ...

  3. 黄聪:No 'Access-Control-Allow-Origin' header is present on the requested resource解决办法

    在.htaccess文件里面添加下面代码: <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*& ...

  4. SQL 养成一个好习惯是一笔财富

    来源:MR_ke 链接:http://www.cnblogs.com/MR_ke/archive/2011/05/29/2062085.html 我们做软件开发的,大部分人都离不开跟数据库打交道,特别 ...

  5. requirejs笔记

    1.RequireJS是一个工具库,主要用于客户端的模块管理.它可以让客户端的代码分成一个个模块.实现异步或动态加载,从而提高代码的性能和可维护性.它的模块管理遵循AMD规范(Asynchronous ...

  6. Codeforces 723e [图论][欧拉回路]

    /* 不要低头,不要放弃,不要气馁,不要慌张. 题意: 给你一个有n个点,m条边的无向图,给每条边规定一个方向,使得这个图变成有向图,并且使得尽可能多的点入度与出度相同. 输出有多少个这样的点并且输出 ...

  7. Android 获取设备信息 异常

    /**获取设备信息 * @param c * @return */ public static void setDeviceInfo(Context c,RequestParams params){ ...

  8. iOS 设置页面的代码编写

    突然觉得好久没有更新博客了,今天就想把自己的项目中的一些功能和常用的模块写出来给大家参考一下... 这是我的二个项目中的不同的设置界面,第一个设置的那个按钮是 用的开关switch ,当然这个就容易一 ...

  9. 不让Win7休眠的设置

    1:原因 目前有一个项目是采用微服务的架构搭建的,其中一个微服务的数据库是在一位同事的电脑上(Win7系统),一旦这台电脑休眠,对应的数据库服务就访问不了,所以,需要保持此台电脑永不休眠. 2:傻瓜式 ...

  10. 【转】WPF 窗体淡入淡出动画

    第一种 <Window.Triggers> <EventTrigger RoutedEvent="Window.Loaded" > <BeginSto ...