#sql-server
#sql-сервер
Вопрос:
У меня есть несколько таблиц, которые используют скалярную функцию в ограничении проверки столбца. Некоторые таблицы используют одну и ту же функцию более чем в одном столбце. Очевидно, что все эти ограничения имеют разные имена.
Мне нужно изменить эту функцию, однако сначала я должен удалить все ограничения, которые ссылаются на нее.
Возможно ли получить список таблиц и столбцов, которые ссылаются на эту функцию в качестве ограничения, на основе имени функции?
В идеальном мире все имена ограничений содержали бы имя функции, на которую они ссылаются, однако, к сожалению, это не относится к моей базе данных.
Комментарии:
1.
sys.sql_expression_dependencies
ваш друг.2. Я никогда не знал, что это существует, и похоже, что это меняет правила игры! Спасибо, что указали на это
Ответ №1:
вы можете использовать этот скрипт :
select s.name as constraintName,c.name as ColName,o.name as TableName
from sys.check_constraints s
join sys.all_columns c on s.parent_object_id=c.object_id and s.parent_column_id=c.column_id
join sys.objects o on o.object_id=c.object_id
where s.definition like '%your function name%'
Комментарии:
1. У меня это не сработало. Фактически, sys.check_constraints ничего не возвращает …?