RK *_*ala 27 sql-server-2008 sql-server metadata partitioning
如何获取数据库中所有分区表的列表?
我应该查看哪些系统表/DMV?
Rem*_*anu 31
我认为更好的查询如下:
select object_schema_name(i.object_id) as [schema],
object_name(i.object_id) as [object],
i.name as [index],
s.name as [partition_scheme]
from sys.indexes i
join sys.partition_schemes s on i.data_space_id = s.data_space_id
Run Code Online (Sandbox Code Playgroud)
这会查看识别分区方案的“正确”位置:sys.partition_schemes,它具有正确的基数(不需要distinct),它仅显示分区对象(不需要过滤where子句),它投影模式名称和分区方案名称。还要注意这个查询如何突出原始问题的一个缺陷:分区的不是表,而是索引(这包括索引 0 和 1,也就是堆和聚集索引)。一个表可以有多个索引,有些已分区,有些未分区。
Tho*_*ger 24
这个查询应该给你你想要的:
select distinct t.name
from sys.partitions p
inner join sys.tables t
on p.object_id = t.object_id
where p.partition_number <> 1
Run Code Online (Sandbox Code Playgroud)
该sys.partitions目录视图为表和索引的大多数所有分区的列表。只需加入sys.tables即可获得表格。
所有表都至少有一个分区,因此如果您专门查找分区表,那么您必须根据sys.partitions.partition_number <> 1(对于非分区表,partition_number始终等于 1)过滤此查询。
| 归档时间: |
|
| 查看次数: |
123683 次 |
| 最近记录: |