Этот запрос не найдет уникальные индексы, которые явно не используются вместе с ограничением:
select TC.Constraint_Name, CC.Column_Name
from information_schema.table_constraints TC
inner join information_schema.constraint_column_usage CC
on TC.Constraint_Name = CC.Constraint_Name
where TC.constraint_type = 'Unique'
order by TC.Constraint_Name
Итак, как же можно найти подразумеваемое уникальное ограничение, подобное следующему, с помощью INFORMATION_SCHEMA
?
create unique constraint PipelineSummary_CorrelationId on
bronze.AggregatedPipelineSummary (CorrelationId);
Это не так, это переход на лучший сайт, например dba.stackexchange.com
это интересно: значит, SQL больше не является серьезной темой SOF? Это для разработки SQL, а не для работы администратором базы данных.
Я бы избегал использования Information_schema, это в основном из-за совместимости. Вместо этого проверьте sys.indexes и sys.objects.
@WestCoastProjects — это просто вопрос, который нужно задать лучшим экспертам. Поэтому, когда речь идет о более технических вопросах, касающихся баз данных, помимо разработки и запросов, вы с большей вероятностью получите там лучший/быстрый ответ.
Представления INFORMATION_SCHEMA обеспечивают стандартизированное и упрощенное представление каталога вашей базы данных. Он ограничен отображением «логического» представления вашей базы данных и не отображает многие аспекты конструкции вашей базы данных, специфичные для SQL Server.
Поэтому вместо этого используйте собственные представления каталога SQL Server, здесь sys.indexes, например:
select o.name table_name, i.name index_name, i.is_unique_constraint
from sys.objects o
join sys.indexes i
on o.object_id = i.object_id
where is_unique=1
and o.is_ms_shipped = 0
Хорошо, я задал несколько сложных запросов к INFORMATION_SCHEMA
, но по сути начну сначала - учитывая официальный ответ здесь. Спасибо за ваш вклад!
Почему закрытое голосование?