Como obtenho uma lista de todas as tabelas particionadas no meu banco de dados?
Quais tabelas de sistema/DMVs devo examinar?
Como obtenho uma lista de todas as tabelas particionadas no meu banco de dados?
Quais tabelas de sistema/DMVs devo examinar?
Acho que uma consulta melhor é a seguinte:
Isso examina o local 'apropriado' para identificar o esquema de partição:
sys.partition_schemes
, tem a cardinalidade correta (sem necessidade dedistinct
), mostra apenas o objeto particionado (sem necessidade de umawhere
cláusula de filtragem), projeta o nome do esquema e o nome do esquema de partição. Observe também como essa consulta destaca uma falha na pergunta original: não são as tabelas que são particionadas, mas os índices (e isso inclui os índices 0 e 1, também conhecidos como heap e índice clusterizado). Uma tabela pode ter vários índices, alguns particionados, outros não.Esta consulta deve fornecer o que você deseja:
A
sys.partitions
exibição do catálogo fornece uma lista de todas as partições para tabelas e a maioria dos índices. Apenas JUNTE-se a issosys.tables
para obter as tabelas.Todas as tabelas têm pelo menos uma partição, portanto, se você estiver procurando especificamente por tabelas particionadas, precisará filtrar essa consulta com base em
sys.partitions.partition_number <> 1
(para tabelas não particionadas,partition_number
é sempre igual a 1).Bem, então que tal combinar os 2:
Encontrei este artigo enquanto procurava por esse tipo de script e trabalhei com alguns recursos para criá-los em um servidor SQL 2019.
Espero que sejam úteis.