Как получить список всех секционированных таблиц в моей базе данных?
На какие системные таблицы / DMV я должен смотреть?
Как получить список всех секционированных таблиц в моей базе данных?
На какие системные таблицы / DMV я должен смотреть?
Ответы:
Этот запрос должен дать вам то, что вы хотите:
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.partitionsкаталога дает список всех разделов для таблиц и большинства индексов. Просто присоединяйся, sys.tablesчтобы получить таблицы.
Все таблицы имеют хотя бы один раздел, поэтому, если вы ищете специально для многораздельных таблиц, вам придется отфильтровать этот запрос на основе sys.partitions.partition_number <> 1(для однораздельных таблиц partition_numberвсегда равен 1).
partition_idв вашем предложении ГДЕ вам нужно partition_number. Мои извенения.
Метинкс лучший запрос выглядит следующим образом:
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
При этом рассматривается «правильное» место для идентификации схемы разбиения: у sys.partition_schemesнего правильная мощность (нет необходимости distinct), показывается только разделенный объект (нет необходимости в whereпредложении фильтрации ), проецируется имя схемы и имя схемы разбиения. Обратите также внимание на то, как этот запрос подчеркивает недостаток исходного вопроса: разбиваются не таблицы , а индексы (включая индексы 0 и 1, иначе говоря, куча и кластеризованный индекс). Таблица может иметь несколько индексов, некоторые разделены, некоторые нет.
Хорошо, тогда как насчет объединения 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