首页 | 公司简介 | 数据恢复 | 备份服务 | 成功案例 | 技术中心 | 客户服务 | 服务报价 | 数据恢复软件 | 联系我们 | 北亚博客  
 
  北京总部: 4006-505-646
  天 津 部: 4006-505-646
  上 海 部: 4006-505-646
  深 圳 部: 4006-505-646
  广 州 部: 4006-505-646
  重 庆 部: 4006-505-646
  南 京 部: 4006-505-646
  其它地区: 4006-505-646
北亚数据恢复软件Windows专业版
三星手机数据恢复软件V1.0
北亚苹果手机数据恢复软件V2.0
北亚硬盘录像机数据恢复软件 V
北亚vmware虚拟机数据恢复软件
北亚照片数据恢复软件
北亚摄像机数据恢复软件 v2.1
北亚Sybase数据库修复软件 V2.
raid磁盘阵列应急方案
HP EVA4400/6400/8400/P6000
iphone 通讯录丢失如何恢复?
xen server 存储库(sr)损坏后
RAID6结构原理详解(北亚数据
AIX下删除LV后的现场保护和数
RAID损坏后 对数据的完整备份
您当前的位置:首页 >> 技术中心 >> 数据库修复文栏 >> 正文

SQL Server 数据库-页结构

      数据页(Data Page),是SQL Server最小的存储单位,类似Oracle的数据块(Data Block),数据存放在“数据页”中。一个数据Page Header指出页面中所有标题字段的数据。
     Data指出每一行的信息。对于每一行,DBCC Page指出行在槽中的位置,以及该行在页面中的偏移量。页面数据被分成3部分,左列指出的是所显示的数据在行中的字节位置。接着4列包含页面存页占用一定的磁盘空间。 以下方式可以查看SQL Server中的数据页的详细信息。
     DBCC Page的输出主要分为5个部分: Page、BUFFER、Page Hearder、Data、OFFSET Table(行的偏移量数组)。
     Page指出该表的文件编号及页码。
     Buffer指出关于给定页面的缓冲区的信息。
    储的实际数据,以16进制的形式显示。右列包含数据的字符表示(只有字符数据是可读的)。
    我们可以通过Offset Table找到记录始末,从而达到提取记录数据库修复的目的。
     Offset Table指出页面末尾的行偏移量数组的内容。注意这里并不是行物理存储的顺序,而是以槽的编号的顺序来显示的,不过这里可以通过槽的编号看出它的物理存储顺序,比如槽的编号最小的为物理存储的第一行,  依此类推。

       1:DBCC IND(DatabaseName,TableName,-1)
返回所有数据或索引页(包含IAM页,PageType=10)
数据页(PageType)类型:


    0 = empty / unallocated page
    1 = data page (user data pages and SQL reserved pages)
    8 = gam (global allocation map)
    9 = sgam (shared global allocation map)
   10 = iam (index allocation map)
   11 = page free space (PFS)
   15 = file header page
   16 = differential bitmap page showing which extents have changed since the last full or differential backup
   17 = a minimally-logged bitmap page showing which extents have changed since the last backup (for bulk-logged recovery mode)

IndexLevel列
0 索引列
>1 表示中间索引节点,最大值为索引根节点

2. DBCC TRACEON (3604);

要想看到输出的结果,还需要设置DBCC TRACEON(3604)。打开跟踪标记

3. DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])
例如:DBCC PAGE (DatabaseName, 1, 0, 3) –查看第0页,即数据库文件头

  具体参数描述如下:
  dbid 包含页面的数据库ID
  dbname 包含页面的数据库的名称
   filenum 包含页面的文件编号
   pagenum 文件内的页面
   printopt 可选的输出选项;选用其中一个值:
  0:默认值,输出缓冲区的标题和页面标题
  1:输出缓冲区的标题、页面标题(分别输出每一行),以及行偏移量表
  2:输出缓冲区的标题、页面标题(整体输出页面),以及行偏移量表
  3:输出缓冲区的标题、页面标题(分别输出每一行),以及行偏移量表;每一行
后跟分别列出的它的列值

     对于表来说,它所在的dbid或者dbname很容易知道,那么它的filenum和pagenum怎么知道呢?其实这个值存在系统表 sysindexes的列first中(当indid为0或者1时,indid为0表示该表是一个堆表,没有任何聚集索引,indid为1表示该索引为聚集索引),列first的数据类型为binary(6),它是以16进制的形式储的,需要进行转换。在16进制中,每两个16进制数字表示一个字节,并且是逆序排列的。比如假设一个表的first的值为0xC70000000100,怎么转换呢?因为它是逆序排列的,并且每两个表示一个字节,所以每次都将剩下first值的最后两位移到转换后数据的最后,具体步骤 此时的first值 转换后的数据
第0步 0xC70000000100
第1步 0xC700000001
第2步 0xC7000000 0001
第3步 0xC70000 000100
第4步 0xC700 00010000
第5步 0xC7 0001000000
第6步 0x 0001000000C7

     此时转换完成。数据0001000000C7即是我们需要的数据,其中它的前2组数(即0001)表示该表所在的文件编号;后4组(000000C7)表示该表所在的页码(注意该数据还要转换为10进制的数才能具体知道是多少)。

 

上一篇:SQL数据库损坏及恢复分析
下一篇:修复mysql数据库
返回首页 | 联系我们 | 关于我们 | 招聘信息 | 友情链接 | 网站地图 | 合作伙伴
版权所有 北京北亚宸星科技有限公司
全国统一客服热线:4006-505-646
北京总部:北京市海淀区永丰基地丰慧中路7号新材料创业大厦B座205室
京ICP备09039053

nc=egle