Перечислите базовые объекты, используемые в функции SQL Server.

dba.stackexchange https://dba.stackexchange.com/questions/101568

  •  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);
.

и как бонус: http://beyondrelationalion.com/modules/2/blogs/28/posts/10399/tsql-lab-9-how-to-find--Дестеренность-цепочка A-Batabase-object.aspx

Другие советы

* Пожалуйста прочти *

Как отмечено в ответе @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') 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top