Перечислите базовые объекты, используемые в функции SQL Server.
-
26-09-2020 - |
Вопрос
Я использую приведенное ниже, чтобы получить список базовых объектов в представлении:
SELECT view_name, Table_Name
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE View_Name IN
(
'View1', 'View2'
)
ORDER BY view_name, table_name
Я не смог найти ни одной системной таблицы, предоставляющей базовые объекты в функции.Есть ли у кого-нибудь идеи, как легко получить эту информацию?Я имею дело со многими функциями с несколькими базовыми объектами БД и хочу избежать ручных усилий для получения этой информации.Спасибо!
Решение
sp_depends предоставит вам список зависимых объектов во всех текущих версияхSQL Server, но перечислены как устаревшие.
Вот артикул MSDN с способом поиска объектов, ссылающихсяФункция и с небольшими модификациями Вы можете получить список объектов, на который ссылаются функция:
SELECT OBJECT_NAME(object_id) AS referencing_object_name
,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
,object_name(referenced_major_id) as referenced_object
,*
FROM sys.sql_dependencies
--WHERE referenced_major_id = OBJECT_ID('schema.objectname')
where object_id = object_id('schema.objectname')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);
.
Другие советы
* Пожалуйста прочти *
Как отмечено в ответе @Spörri выше, sys.sql_dependencies
не рекомендуется.
sys.sql_зависимости (Transact-SQL) :
Эта функция будет удалена в будущей версии Microsoft SQL Server.Избегайте использования этой функции в новой разработке и планируйте изменять приложения, которые в настоящее время используют эту функцию.Вместо этого используйте sys.sql_expression_dependencies.
Я заметил, что среди трех функций в устаревшей таблице отсутствовал идентификатор объекта одной функции. sys.sql_dependencies
, и я нашел все в sys.sql_expression_dependencies
вместо этого стол.Поэтому используйте приведенное ниже, чтобы получить зависимости:
select *
from sys.sql_expression_dependencies
where referencing_id = object_id('schema.object_name')