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