使用DBCC PAGE检查SQL Server表和索引数据


摘要:
我读过很多关于数据库页面的文章,以及它们如何用于存储表格数据和索引数据。有什么方法可以真正查看这些信息吗?


处理方法:
sql server中未被公开的关键字 dbcc page,此关键字的功能为查看索引页和数据页中的数据
——————–
dbcc page语法简介:

DBCC PAGE
(
['database name'|database id], -- can be the actual name or id of the database
file number, -- the file number where the page is found
page number, -- the page number within the file 
print option = [0|1|2|3] -- display option; each option provides differing levels of information
) 

----例:
 
CREATE DATABASE tmpInfo
GO
USE tmpInfo
GO
CREATE TABLE test
(
 keyId int identity,info varchar(30)
)
go

insert into test (info)values('a')
insert into test (info)values('b')
insert into test (info)values('c')
insert into test (info)values('d')
insert into test (info)values('e')
insert into test (info)values('f')
insert into test (info)values('g')
insert into test (info)values('h')
go

-----例:使用dbcc 查看

DBCC IND('tmpInfo',test,-1)

mssql_sqlserver_dbcc_ind数据页查看

mssql_sqlserver_dbcc_ind数据页查看


—————-
PageFID和PagePID列分别表示页面所在的文件编号和数据所在文件内的页码。
IndexID是在sys.indexes中找到的索引’index_id。PageType指示页面的种类。
PageType = 1是数据页面,PageType = 2是索引页面,PageType = 10是维护索引本身的IAM页面。
IndexLevel是页面落在IAM结构中的级别。如果level = 0,那么这是索引的叶级页面。
我们可以看出
数据页的编号为21
—-
我们可以使用

DBCC PAGE('tmpInfo',1,21,3) with TABLERESULTS  ---获取页面相关内容
mssql_sqlserver_dbcc_page数据页查看

mssql_sqlserver_dbcc_page数据页查看