sys.dm_sql_referencing_entities (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Возвращает одну строку для каждой сущности текущей базы данных, которая ссылается на имя какой-либо другой определенной пользователем сущности. Зависимость между двумя сущностями создается, когда одна сущность, называемая указанной сущностью, отображается по имени в сохраняемом выражении SQL другой сущности, называемой сущностью ссылки. Например, если в качестве упоминаемой сущности, выступает определяемый пользователем тип (UDT), то данная функция возвращает список всех определяемых пользователем сущностей, ссылающихся в своих определениях на имя указанного определяемого пользователем типа. Функция не возвращает список сущностей других баз данных, ссылающихся на указанную сущность. Данная функция предназначена для выполнения в контексте базы данных master и возвращает триггер DDL уровня сервера как ссылающаяся сущность.
Данная динамическая административная функция может быть использована для отображения списка сущностей текущей базы данных, ссылающихся на заданную сущность и имеющих следующие типы:
сущности, как связанные со схемой, так и не связанные;
триггеры DDL уровня базы данных;
триггеры DDL уровня сервера.
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий), База данных SQL.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sys.dm_sql_referencing_entities (
' schema_name.referenced_entity_name ' , ' <referenced_class> ' )
<referenced_class> ::=
{
OBJECT
| TYPE
| XML_SCHEMA_COLLECTION
| PARTITION_FUNCTION
}
Аргументы
schema_name.referenced_entity_name
Имя указанной сущности.
schema_name
требуется, за исключением случаев, когда указанный класс PARTITION_FUNCTION.
schema_name.referenced_entity_name
имеет значение nvarchar(517).
<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
Класс объекта, на который ссылается ссылка. В одной инструкции может быть указан только один класс.
<referenced_class>
имеет значение nvarchar(60).
Возвращаемая таблица
Имя столбца | Тип данных | Description |
---|---|---|
referencing_schema_name | sysname | Схема, которой принадлежит ссылающаяся сущность. Допускает значение NULL. Значение NULL для триггеров DDL уровня базы данных или сервера. |
referencing_entity_name | sysname | Имя ссылающейся сущности. Не допускает значение NULL. |
referencing_id | int | Идентификатор ссылающейся сущности. Не допускает значение NULL. |
referencing_class | tinyint | Класс ссылающейся сущности. Не допускает значение NULL. 1 = объект 12 = триггер DDL уровня базы данных 13 = триггер DDL уровня сервера |
referencing_class_desc | nvarchar(60) | Описание класса ссылающейся сущности. OBJECT DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER |
is_caller_dependent | bit | Указывает разрешение идентификатора упоминаемой сущности, полученного во время выполнения (так как он зависит от схемы вызывающего объекта). Значение 1 означает, что ссылающаяся сущность может ссылаться на данный объект. При этом разрешение упоминаемой сущности зависит от вызывающего объекта и не может быть определено. Данная ситуация возможна только при вызове в инструкции EXECUTE не связанной со схемой ссылки на хранимую процедуру, расширенную хранимую процедуру или определяемую пользователем функцию. Значение 0 означает, что упоминаемая сущность не зависит от вызывающего объекта. |
Исключения
Возвращает пустой результирующий набор, если выполняется любое из следующих условий.
Указан системный объект.
Указанная сущность не существует в текущей базе данных.
Указанная сущность не ссылается ни на какие сущности.
Передан недопустимый параметр.
Возвращает ошибку, если заданная упоминаемая сущность является пронумерованной хранимой процедурой.
Замечания
В следующей таблице перечислены типы сущностей, для которых созданы и обновляются данные о зависимостях. Данные о зависимостях не создаются и не обновляются для правил, значений по умолчанию, временных таблиц, временных хранимых процедур и системных объектов.
Тип объекта | Ссылающаяся сущность | Упоминаемая сущность |
---|---|---|
Таблица | Да* | Да |
Представления | Да | Да |
Хранимая процедура Transact-SQL** | Да | Да |
Хранимая процедура CLR | No | Да |
Определяемая пользователем функция Transact-SQL | Да | Да |
Определяемая пользователем функция CLR | No | Да |
Триггер CLR (DML и DDL) | No | No |
Триггер DML Transact-SQL | Да | Нет |
Триггер DDL уровня базы данных Transact-SQL | Да | Нет |
Триггер DDL уровня Transact-SQL | Да | Нет |
Расширенные хранимые процедуры | No | Да |
Queue | No | Да |
Синоним | No | Да |
Тип (псевдоним и определяемый пользователем тип данных CLR) | No | Да |
Коллекция схем XML | No | Да |
Функция секционирования | No | Да |
* Таблица отслеживается как сущность, ссылающаяся только в том случае, если она ссылается на модуль Transact-SQL, определяемый пользователем тип или коллекцию схем XML в определении вычисляемого столбца, ограничения CHECK или ограничения DEFAULT.
** Пронумерованные хранимые процедуры с целочисленным значением больше 1 не отслеживаются в качестве ссылающихся или упоминаемых сущностей.
Разрешения
SQL Server 2008 (10.0.x) — SQL Server 2012 (11.x)
Необходимо разрешение CONTROL для указанного объекта. Если упоминаемая сущность является функцией секционирования, необходимо разрешение CONTROL на базу данных.
Требуется разрешение SELECT на sys.dm_sql_referencing_entities. Разрешение SELECT по умолчанию предоставляется роли public.
SQL Server 2014 (12.x) и более поздних версий
Не требуются какие-либо разрешения на указанный объект. Частичные результаты могут быть возвращены, если пользователь имеет разрешение VIEW DEFINITION лишь на некоторые из указываемых сущностей.
Необходимо разрешение VIEW DEFINITION на объект, если ссылающаяся сущность является объектом.
Необходимо разрешение VIEW DEFINITION на базу данных, если ссылающаяся сущность является триггером DDL уровня базы данных.
Требуется разрешение VIEW ANY DEFINITION на уровне сервера, если ссылающаяся сущность является триггером DDL уровня сервера.
Примеры
А. Получение списка сущностей, ссылающихся на заданную сущность
В следующем примере возвращается список сущностей текущей базы данных, которые ссылаются на указанную таблицу.
USE AdventureWorks2022;
GO
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('Production.Product', 'OBJECT');
GO
B. Получение списка сущностей, ссылающихся на заданный тип
В следующем примере возвращается список сущностей, ссылающихся на псевдоним типа dbo.Flag
. Результирующий набор показывает, что этот тип используется двумя хранимыми процедурами. Тип dbo.Flag
также используется в определении нескольких столбцов в таблице, однако, поскольку тип не находится в определении вычисляемого столбца, ограничения CHECK или ограничения DEFAULT в HumanResources.Employee
таблице, строки не возвращаются для HumanResources.Employee
таблицы.
USE AdventureWorks2022;
GO
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('dbo.Flag', 'TYPE');
GO
Вот результирующий набор.
referencing_schema_name referencing_entity_name referencing_id referencing_class_desc is_caller_dependent
----------------------- ------------------------- ------------- ---------------------- -------------------
HumanResources uspUpdateEmployeeHireInfo 1803153469 OBJECT_OR_COLUMN 0
HumanResources uspUpdateEmployeeLogin 1819153526 OBJECT_OR_COLUMN 0
(2 row(s) affected)`
См. также
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)