一天一点T-SQL:获取表&索引在数据库中存储位置

  
  
  
  
  1. -- 生产DBA常用脚本(-):获取表&索引在数据库中存储位置 
  2. -- 场景:生产数据库达到一定量级后将不可能只有一个默认文件组进行数据存储 
  3. --      当文件组太多、表太多、索引太多时,可以通过这份脚本快速定位对象所在存储位置 
  4.  
  5. SELECT 
  6.     DISTINCT OBJ.NAME,FG.NAME 
  7. FROM 
  8.     SYS.PARTITIONS PT 
  9. INNER JOIN 
  10.     SYS.OBJECTS OBJ 
  11. ON  
  12.     PT.OBJECT_ID=OBJ.OBJECT_ID 
  13. AND  
  14.     OBJ.TYPE='U'    -- U User Table V View 
  15. INNER JOIN 
  16.     SYS.ALLOCATION_UNITS UNIT 
  17. ON 
  18.     UNIT.CONTAINER_ID=PT.HOBT_ID 
  19. INNER JOIN 
  20.     SYS.FILEGROUPS FG 
  21. ON 
  22.     UNIT.DATA_SPACE_ID=FG.DATA_SPACE_ID 
  23. WHERE 
  24.     PT.INDEX_ID=0 -- 0 堆表 1 聚集索引 > 1 非聚集索引 
  25. GROUP BY 
  26.     OBJ.NAME, FG.NAME --一张表可能放置在多个文件组里,所以必须GROUP,否则直接DISTINCT会有问题 
  27. HAVING 
  28.     FG.NAME = 'FileGroupName' 
  29. ORDER BY 
  30.     OBJ.NAME, FG.NAME 

 

本文出自 “Fast” 博客,谢绝转载!

你可能感兴趣的:(数据库,职场,休闲,表)