创建测试表

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. FC 坦克大战 老巢铁墙

    老巢外围铁墙E2A9:AC 80 EFEF80:A5 10 85 45 A5 45 AC D2 E2 用十六进制编辑器打开坦克大战的游戏文件搜索A5 45 F0 25 A5 0B改为AC 80 EF ...

  2. 数据库 MySql(二)

    MySQL(二) 1.外键及连表 外键 一个特殊的索引,只能是指定内容 CREATE TABLE part1 ( nid INT NOT NULL auto_increment PRIMARY KEY ...

  3. No.5__C#

    One month 今天是个有纪念意义的日子,2015-4-23.今天是实习的第一个月,算是成就达成吧.虽然,除去了周末六日和清明什么的,只剩下20多天了,但是,还是好开心 啊,毕竟是第一次参加工作, ...

  4. UITapGestureRecognizer响应顺序是怎么样的

    一个scrollview上有几个按钮在scrollview上add 了一个单击事件 singletap = [[UITapGestureRecognizer alloc] initWithTarget ...

  5. 使用Auto Layout中的VFL(Visual format language)--代码实现自动布局【转】

    本文将通过简单的UI来说明如何用VFL来实现自动布局.在自动布局的时候避免不了使用代码来加以优化以及根据内容来实现不同的UI. 一:API介绍 NSLayoutConstraint API 1 2 3 ...

  6. Python复习笔记-字典和文件操作

    抽时间回顾2年前自己做过的python工具,突然感觉不像自己写的,看来好久没用过python的字典和文件操作了,查询资料和网页,整理如下: 一.字典 键值对的集合(map) 字典是以大括号“{}”包围 ...

  7. EXT学习之——Ext下拉框绑定无效的问题

    1.保证store定义是否在combobox前面 2.有没写  .load 3.有没赋值  xxstore:xxstore 具体看详细步骤 http://www.cnblogs.com/wdw3121 ...

  8. dedecms代码研究五

    上一次留几个疑问: 1)DedeTagParse类LoadTemplet方法. 2)MakeOneTag到底在搞什么. 从DedeTagParse开始前面,我们一直在dedecms的外围,被各种全局变 ...

  9. JavaScript Function(函数表达式)

    创建函数 创建函数的方式有两种:1.函数声明,2.函数表达式 函数声明的语法为 functionName(); //不会报错,函数声明提升function functionName(arg0,arg1 ...

  10. glReadPixels函数

    GPU渲染完数据在显存,回传内存的唯一方式glReadPixels函数... glReadPixels:读取一些像素.当前可以简单理解为“把已经绘制好的像素(它可能已经被保存到显卡的显存中)读取到内存 ...