呵呵,我做的一个实验,你可以参考参考:--1.先建表 CREATE TABLE test(idd INT NOT NULL,name VARCHAR(10) NULL)INSERT INTO TEST SELECT 1,'abcdefg' UNION ALL SELECT 2,'hijklmn' --SELECT * FROM TESTSELECT * FROM sys.tables WHERE name = 'test'--2.查询元数据 --hobt_id : 72057594043236352 SELECT hobt_id FROM sys.partitions WHERE object_id = object_id('test') /* first_page :0x790500000100拆分成2部分:0100和79050000这2部分要翻转,也就是0001 和 00000579前面表示fileId,后面是pageId,都是16机制的表示方法,通过calc计算器的转换,就是10进制就是1和1401*/ SELECT first_page --转换值的顺序 FROM sys.system_internals_allocation_units WHERE container_id = 72057594043236352--3.这里创建一个表,用来存放dbcc page的结果 if exists(select * from sys.tables where name = 'dbcc_page') drop table dbcc_page go create table dbcc_page ( ParentObject varchar(500), Object varchar(2000), Field varchar(1000), Value nvarchar(max) ) go --4.参数分别是数据库名,fileid,pageid,显示格式 --注意:这里是在自己的电脑上实验,用的master数据库,大家不要在正是服务器上尝试 /* --这样会报错,只能采用下面的,建一个存储过程 insert into dbcc_page(ParentObject,Object,Field,Value) DBCC page(master,1,1401,3) with tableresults */ if exists(select * from sys.procedures where name = 'proc_dbcc_page') drop procedure proc_dbcc_page gocreate procedure proc_dbcc_page asDBCC page(master,1,1401,3) with tableresultsgo --5.把dbcc page的结果插入到表中 insert into dbcc_page(ParentObject,Object,Field,Value) exec proc_dbcc_page --6.查看数据 select * from dbcc_page --过滤大部分其他元数据,选出表test中的数据,与最上面的数据相一致 select OBJECT, Field, value from dbcc_page where Object like 'Slot%Column%' /* OBJECT Field value Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 4 idd 1 Slot 0 Column 2 Offset 0xf Length 7 Length (physical) 7 name abcdefg Slot 1 Column 1 Offset 0x4 Length 4 Length (physical) 4 idd 2 Slot 1 Column 2 Offset 0xf Length 7 Length (physical) 7 name hijklmn */
呵呵,我做的一个实验,你可以参考参考:--1.先建表 CREATE TABLE test(idd INT NOT NULL,name VARCHAR(10) NULL)INSERT INTO TEST SELECT 1,'abcdefg' UNION ALL SELECT 2,'hijklmn' --SELECT * FROM TESTSELECT * FROM sys.tables WHERE name = 'test'--2.查询元数据 --hobt_id : 72057594043236352 SELECT hobt_id FROM sys.partitions WHERE object_id = object_id('test') /* first_page :0x790500000100拆分成2部分:0100和79050000这2部分要翻转,也就是0001 和 00000579前面表示fileId,后面是pageId,都是16机制的表示方法,通过calc计算器的转换,就是10进制就是1和1401*/ SELECT first_page --转换值的顺序 FROM sys.system_internals_allocation_units WHERE container_id = 72057594043236352--3.这里创建一个表,用来存放dbcc page的结果 if exists(select * from sys.tables where name = 'dbcc_page') drop table dbcc_page go create table dbcc_page ( ParentObject varchar(500), Object varchar(2000), Field varchar(1000), Value nvarchar(max) ) go --4.参数分别是数据库名,fileid,pageid,显示格式 --注意:这里是在自己的电脑上实验,用的master数据库,大家不要在正是服务器上尝试 /* --这样会报错,只能采用下面的,建一个存储过程 insert into dbcc_page(ParentObject,Object,Field,Value) DBCC page(master,1,1401,3) with tableresults */ if exists(select * from sys.procedures where name = 'proc_dbcc_page') drop procedure proc_dbcc_page gocreate procedure proc_dbcc_page asDBCC page(master,1,1401,3) with tableresultsgo --5.把dbcc page的结果插入到表中 insert into dbcc_page(ParentObject,Object,Field,Value) exec proc_dbcc_page --6.查看数据 select * from dbcc_page --过滤大部分其他元数据,选出表test中的数据,与最上面的数据相一致 select OBJECT, Field, value from dbcc_page where Object like 'Slot%Column%' /* OBJECT Field value Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 4 idd 1 Slot 0 Column 2 Offset 0xf Length 7 Length (physical) 7 name abcdefg Slot 1 Column 1 Offset 0x4 Length 4 Length (physical) 4 idd 2 Slot 1 Column 2 Offset 0xf Length 7 Length (physical) 7 name hijklmn */
GO
DBCC PAGE(5,1,989172)
比如记录的userid是1还是100w这样的还有就是。。这个对死锁分析具体有什么作用呢~
这个技术内幕有记录吗?是哪一部啊?
呵呵,我做的一个实验,你可以参考参考:--1.先建表
CREATE TABLE test(idd INT NOT NULL,name VARCHAR(10) NULL)INSERT INTO TEST
SELECT 1,'abcdefg'
UNION ALL
SELECT 2,'hijklmn'
--SELECT * FROM TESTSELECT *
FROM sys.tables
WHERE name = 'test'--2.查询元数据
--hobt_id : 72057594043236352
SELECT hobt_id
FROM sys.partitions
WHERE object_id = object_id('test')
/*
first_page :0x790500000100拆分成2部分:0100和79050000这2部分要翻转,也就是0001 和 00000579前面表示fileId,后面是pageId,都是16机制的表示方法,通过calc计算器的转换,就是10进制就是1和1401*/
SELECT first_page --转换值的顺序
FROM sys.system_internals_allocation_units
WHERE container_id = 72057594043236352--3.这里创建一个表,用来存放dbcc page的结果
if exists(select * from sys.tables where name = 'dbcc_page')
drop table dbcc_page
go
create table dbcc_page
(
ParentObject varchar(500),
Object varchar(2000),
Field varchar(1000),
Value nvarchar(max)
)
go
--4.参数分别是数据库名,fileid,pageid,显示格式
--注意:这里是在自己的电脑上实验,用的master数据库,大家不要在正是服务器上尝试
/*
--这样会报错,只能采用下面的,建一个存储过程
insert into dbcc_page(ParentObject,Object,Field,Value)
DBCC page(master,1,1401,3) with tableresults
*/
if exists(select * from sys.procedures where name = 'proc_dbcc_page')
drop procedure proc_dbcc_page
gocreate procedure proc_dbcc_page
asDBCC page(master,1,1401,3) with tableresultsgo
--5.把dbcc page的结果插入到表中
insert into dbcc_page(ParentObject,Object,Field,Value)
exec proc_dbcc_page
--6.查看数据
select *
from dbcc_page
--过滤大部分其他元数据,选出表test中的数据,与最上面的数据相一致
select OBJECT,
Field,
value
from dbcc_page
where Object like 'Slot%Column%'
/*
OBJECT Field value
Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 4 idd 1
Slot 0 Column 2 Offset 0xf Length 7 Length (physical) 7 name abcdefg
Slot 1 Column 1 Offset 0x4 Length 4 Length (physical) 4 idd 2
Slot 1 Column 2 Offset 0xf Length 7 Length (physical) 7 name hijklmn
*/
呵呵,我做的一个实验,你可以参考参考:--1.先建表
CREATE TABLE test(idd INT NOT NULL,name VARCHAR(10) NULL)INSERT INTO TEST
SELECT 1,'abcdefg'
UNION ALL
SELECT 2,'hijklmn'
--SELECT * FROM TESTSELECT *
FROM sys.tables
WHERE name = 'test'--2.查询元数据
--hobt_id : 72057594043236352
SELECT hobt_id
FROM sys.partitions
WHERE object_id = object_id('test')
/*
first_page :0x790500000100拆分成2部分:0100和79050000这2部分要翻转,也就是0001 和 00000579前面表示fileId,后面是pageId,都是16机制的表示方法,通过calc计算器的转换,就是10进制就是1和1401*/
SELECT first_page --转换值的顺序
FROM sys.system_internals_allocation_units
WHERE container_id = 72057594043236352--3.这里创建一个表,用来存放dbcc page的结果
if exists(select * from sys.tables where name = 'dbcc_page')
drop table dbcc_page
go
create table dbcc_page
(
ParentObject varchar(500),
Object varchar(2000),
Field varchar(1000),
Value nvarchar(max)
)
go
--4.参数分别是数据库名,fileid,pageid,显示格式
--注意:这里是在自己的电脑上实验,用的master数据库,大家不要在正是服务器上尝试
/*
--这样会报错,只能采用下面的,建一个存储过程
insert into dbcc_page(ParentObject,Object,Field,Value)
DBCC page(master,1,1401,3) with tableresults
*/
if exists(select * from sys.procedures where name = 'proc_dbcc_page')
drop procedure proc_dbcc_page
gocreate procedure proc_dbcc_page
asDBCC page(master,1,1401,3) with tableresultsgo
--5.把dbcc page的结果插入到表中
insert into dbcc_page(ParentObject,Object,Field,Value)
exec proc_dbcc_page
--6.查看数据
select *
from dbcc_page
--过滤大部分其他元数据,选出表test中的数据,与最上面的数据相一致
select OBJECT,
Field,
value
from dbcc_page
where Object like 'Slot%Column%'
/*
OBJECT Field value
Slot 0 Column 1 Offset 0x4 Length 4 Length (physical) 4 idd 1
Slot 0 Column 2 Offset 0xf Length 7 Length (physical) 7 name abcdefg
Slot 1 Column 1 Offset 0x4 Length 4 Length (physical) 4 idd 2
Slot 1 Column 2 Offset 0xf Length 7 Length (physical) 7 name hijklmn
*/
这个可以有