通过dbcc page来查看表中的数据
--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 TEST SELECT *
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
go create procedure proc_dbcc_page
as DBCC page(master,1,1401,3) with tableresults go --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
*/
除了上面所解析的1401页外,我们还可以查看其他的页:
/*
DBCC ind: DBCC IND(
['database name'|database id],
tablename,
indexid,
-1 shows all indexes and IAMs, -2 just show IAMs
) PageFID: 页所在的文件号
PagePID: 数据所在文件内的页号
IndexID: 在sys.indexes中的index_id, -1表示所有索引页和IAM页,-2只显示IAM页
PageType:表示页的类型,1是数据页,2是索引页,10是保存页本身的IAM页。
IndexLevel: 是IAM结构的级别。如果0,那么这是索引的叶级别页
*/ select name,
index_id -- 0
from sys.indexes
where object_id = object_id('test') --1.创建表
if exists(select * from sys.tables where name = 'dbcc_ind')
drop table dbcc_ind
go create table dbcc_ind
(
PageFID numeric(20),
PagePID numeric(20), IAMFID numeric(20),
IAMPID numeric(20), ObjectID numeric(20),
IndexID numeric(20),
PartitionNumber numeric(20),
PartitionID numeric(20), iam_chain_type nvarchar(100), PageType numeric(20),
IndexLevel numeric(20), NextPageFID numeric(20),
NextPagePID numeric(20),
PrevPageFID numeric(20),
PrevPagePID numeric(20)
)
go --2.建存储过程
if exists(select * from sys.procedures)
drop procedure proc_dbcc_ind
go create procedure proc_dbcc_ind
as dbcc ind(master,test,0) go insert into dbcc_ind
exec proc_dbcc_ind --3.一共2页,分别是IAM页1402,数据页1401
select PageFID,
PagePID,
OBJECTID,
IndexID,
PartitionNumber,
PartitionID,
iam_chain_type,
PageType,
IndexLevel, NextPageFID, --下一页的文件id
NextPagePID, --下一页的页id
PrevPageFID,
PrevPagePID
from dbcc_ind
通过dbcc page来查看表中的数据的更多相关文章
- 查看hive中某个表中的数据、表结构及所在路径
查看hive中action_data_myisam表中的数据.表结构及所在路径 1.客户端进入hive环境:hive 2.查看表数据,鉴于数据量大,这里只显示前五条:select * from act ...
- Hive通过查询语句向表中插入数据注意事项
最近在学习使用Hive(版本0.13.1)的过程中,发现了一些坑,它们或许是Hive提倡的比关系数据库更加自由的体现(同时引来一些问题),或许是一些bug.总而言之,这些都需要使用Hive的开发人员额 ...
- EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的
我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...
- 第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据
第18课-数据库开发及ado.net 连接数据库.增.删.改向表中插入数据并且返回自动编号.SQLDataReade读取数据 ADO.NET 为什么要学习? 我们要搭建一个平台(Web/Winform ...
- 初学者使用MySQL_Workbench 6.0CE创建数据库和表,以及在表中插入数据。
标签: mysqlworkbench数据库 2013-10-09 20:17 19225人阅读 评论(14) 收藏 举报 分类: mysql(1) 版权声明:本文为博主原创文章,未经博主允许不得转 ...
- Jmeter----读取excel表中的数据
Jmeter 读取excel数据使用的方法是使用CSV Data Set Config参数化,之后使用BeanShell Sampler来读取excel表中的数据 第一步.查看所需的接口都要哪些字段和 ...
- 【数据传输 2】批量导入的前奏:将Excel表中的数据转换为DataTable类型
导读:我们知道,在数据库中,数据集DataSet是由多张DataTable表组成.所以,如果我们需要将数据从外部导入到数据库中,那么要做的很重要的一步是将这些数据转换为数据库可以接受的结构.今天在用S ...
- Hive通过查询语句向表中插入数据过程中发现的坑
前言 近期在学习使用Hive(版本号0.13.1)的过程中,发现了一些坑,它们也许是Hive提倡的比关系数据库更加自由的体现(同一时候引来一些问题).也许是一些bug.总而言之,这些都须要使用Hive ...
- 向mysql数据表中插入数据失败的原因
1.案例代码: $sql1="insert into content(category,subject,content,username,release_date) values('{$ca ...
随机推荐
- UR #13 Yist
第一次打UR,打了一个半小时就弃疗了QAQ 这是我唯一一道考试的时候做出来的题目,其他两道连暴力都懒得写了 很容易发现对于每个要删除的点 我们找到左边第一个比他小的不用删除的点,右边第一个比他小的不用 ...
- IOS 系统API---NSJSONSerialization四个枚举什么意思
IOS 系统API---NSJSONSerialization四个枚举什么意思 NSJSONReadingMutableContainers:返回可变容器,NSMutableDictionary或NS ...
- javaweb学习总结(四十七)——监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- 深入php面向对象和模式
前两章是php历史和概论,略过. 第三章 对象基础 3.1 类和对象 类,是用于生成对象的代码模版. public 公有的,都可调用. protected 保护的, 只有本类和子类可以调用. priv ...
- IntelliJ IDEA 添加jar包的三种方式
一.直接复制:(不推荐)方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下.
- UVA 10041 Vito's Family (中位数)
Problem C: Vito's family Background The world-known gangster Vito Deadstone is moving to New York ...
- poj 2418 Hardwood Species (map)
题目:http://poj.org/problem?id=2418 在poj 上交题总是有各种错误,再次感叹各个编译器. c++ AC代码,G++为超时,上代码: #include<cstdio ...
- bzoj1855
让我们继续练习dp 首先这道题约束条件很多 但实际上方程还是很好写的,f[i,j]表示第i天时拥有j只股票的最大收益 令p=max(0,i-k-1) 上一次较交易 易得f[i,j]=max(f[i-1 ...
- [Mac][phpMyAdmin] [2002] No such file or directory
我从phpMyAdmin的官网下载了最新版,将它解压到 /Library/WebServer/Documents 下,然后把文件夹改名 phpmyadmin . 接着输入在浏览器中输入 localho ...
- EF Code First 学习笔记:表映射
多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Perso ...