Найти все ограничения столбцов таблицы, которые ссылаются на функцию

#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 ничего не возвращает …?