Мне нужно выяснить, к какой таблице (имени) относится конкретное ограничение.
Есть ли у кого-нибудь TSQL для достижения этого?
Ответ 1
многие вещи можно рассматривать как ограничение:
первичный ключ
внешний ключ
уникальный индекс
проверить ограничение
по умолчанию столбца
ваш вопрос немного расплывчатый. Вы знаете имя ограничения, тип и т.д.?
Основываясь на ограниченной информации в вашем вопросе. Я предлагаю вам посмотреть исходный код на хранимую процедуру master.sys.sp_helpconstraint.
В Sql Server Management Studio с помощью Обозревателя объектов ust перейдите к: "Базы данных" - "Базы данных системы" - "Мастер" - "Программируемость" - "Хранимые процедуры" - "Хранимые процедуры системы" - "sys.sp_helpconstraint". Он содержит все tsql для запроса всех различных ограничений.
Ответ 2
Это не найдет индексы, которые находятся в sys.indexes
SELECT
OBJECT_NAME(o.parent_object_id)
FROM
sys.objects o
WHERE
o.name = 'MyConstraintName' AND o.parent_object_id <> 0
Ответ 3
ГБН, ваше решение не работает?
SELECT
OBJECT_NAME(o.parent_object_id)
FROM
sys.objects o
WHERE
o.name = 'MyConstraintName' AND o.parent_object_id <> 0
Таким образом, если "MyConstraintName" становится "FK_myConstraint", тогда запрос становится
SELECT OBJECT_NAME(o.parent_object_id)
FROM sys.objects o
WHERE o.name = 'MyConstraintName'
AND o.parent_object_id <> 0
Который не дает результатов
(No column name)
Это говорит о том, что ваше "решение" должно основываться на множестве неустановленных предположений относительно схемы.