mssql sqlserver查看数据行所在物理页的方法分享


摘要:
下文分享三种查看数据行所在物理页的方法分享,如下所示:
实验环境:sql server 2008 R2



方式1:使用%%physloc%%系统常量的方法

  select %%physloc%%  as [物理地址],* from tableName where ...
  /*
     physloc系统常量可结合  sys.fn_physlocFormatter   或  fn_physLocCracker 
	 返回数据行所对应的文件号 页号  行号
  */
 


方式2:使用sys.system_internals_allocation_units 返回表对象对应的起始 文件号 页号

     select OBJECT_NAME(object_id) as Name,p.rows,a.type_desc ,a.total_pages,a.first_page
		,a.first_iam_page,a.root_page
		from sys.partitions P 
		join sys.system_internals_allocation_units a on p.partition_id = a.container_id
			where object_id = object_id('数据库表名称') 
     /*
	   first_page说明:
	    16进制形式存储
            前两组表示文件编号
			后四组表示页编号 
	 */
 


方式3:使用DBCC IND 系统命令 返回页ID 文件号iD

   ---DBCC IND(数据库名称,'表名',-1)
   DBCC IND(dfd,'dbo.test',-1)
 
mssql_sqlserver_dbcc_ind

mssql_sqlserver_dbcc_ind