Jak uzyskać listę wszystkich tabel partycjonowanych w mojej bazie danych?
Na jakie tabele systemowe / DMV powinienem patrzeć?
Jak uzyskać listę wszystkich tabel partycjonowanych w mojej bazie danych?
Na jakie tabele systemowe / DMV powinienem patrzeć?
Odpowiedzi:
To zapytanie powinno dać ci to, czego chcesz:
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
sys.partitionsWidok Katalog zawiera listę wszystkich partycji na stoły i większości indeksów. Po prostu DOŁĄCZ, sys.tablesaby uzyskać tabele.
Wszystkie tabele mają co najmniej jedną partycję, więc jeśli szukasz specjalnie tabel podzielonych na partycje, musisz odfiltrować to zapytanie na podstawie sys.partitions.partition_number <> 1(dla tabel niepartycjonowanych wartość ta partition_numberjest zawsze równa 1).
partition_idw klauzuli WHERE potrzebujesz partition_number. Przepraszam.
Uważa, że lepsze zapytanie jest następujące:
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
Spogląda na „właściwe” miejsce do identyfikacji schematu partycji: sys.partition_schemesma odpowiednią liczność (nie ma potrzeby distinct), pokazuje tylko partycjonowany obiekt (nie wymaga whereklauzuli filtrującej ), wyświetla nazwę schematu i nazwę schematu partycji. Zwróć też uwagę, jak to zapytanie uwypukla lukę w pierwotnym pytaniu: to nie tabele są podzielone na partycje, ale indeksy (i obejmuje to indeks 0 i 1, czyli kupa i indeks klastrowany). Tabela może mieć wiele indeksów, niektóre nie podzielone na partycje.
A co powiesz na połączenie 2:
select
object_schema_name(i.object_id) as [schema],
object_name(i.object_id) as [object_name],
t.name as [table_name],
i.name as [index_name],
s.name as [partition_scheme]
from sys.indexes i
join sys.partition_schemes s on i.data_space_id = s.data_space_id
join sys.tables t on i.object_id = t.object_id