Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
База данных SQL в Microsoft Fabric
Возвращает одну строку для каждой сущности текущей базы данных, которая ссылается на имя какой-либо другой определенной пользователем сущности. Зависимость между двумя сущностями создается, когда одна сущность, называемая указанной сущностью, отображается по имени в сохраняемом выражении SQL другой сущности, называемой сущностью ссылки. Например, если в качестве упоминаемой сущности, выступает определяемый пользователем тип (UDT), то данная функция возвращает список всех определяемых пользователем сущностей, ссылающихся в своих определениях на имя указанного определяемого пользователем типа. Функция не возвращает список сущностей других баз данных, ссылающихся на указанную сущность. Данная функция предназначена для выполнения в контексте базы данных master и возвращает триггер DDL уровня сервера как ссылающаяся сущность.
Данная динамическая административная функция может быть использована для отображения списка сущностей текущей базы данных, ссылающихся на заданную сущность и имеющих следующие типы:
сущности, как связанные со схемой, так и не связанные;
триггеры DDL уровня базы данных;
триггеры DDL уровня сервера.
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий), База данных SQL.
Соглашения о синтаксисе Transact-SQL
Syntax
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).
Возвращаемая таблица
| Название столбца | Тип данных | Описание |
|---|---|---|
| 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 означает, что упоминаемая сущность не зависит от вызывающего объекта. |
Исключения
Возвращает пустой результирующий набор, если выполняется любое из следующих условий.
Указан системный объект.
Указанная сущность не существует в текущей базе данных.
Указанная сущность не ссылается ни на какие сущности.
Передан недопустимый параметр.
Возвращает ошибку, если заданная упоминаемая сущность является пронумерованной хранимой процедурой.
Замечания
В следующей таблице перечислены типы сущностей, для которых созданы и обновляются данные о зависимостях. Данные о зависимостях не создаются и не обновляются для правил, значений по умолчанию, временных таблиц, временных хранимых процедур и системных объектов.
| Тип объекта | Ссылающаяся сущность | Упоминаемая сущность |
|---|---|---|
| Таблица | Да* | Да |
| View | Да | Да |
| Хранимая процедура Transact-SQL** | Да | Да |
| Хранимая процедура CLR | Нет | Да |
| Определяемая пользователем функция Transact-SQL | Да | Да |
| Определённая пользователем функция CLR | Нет | Да |
| Триггер CLR (DML и DDL) | Нет | Нет |
| Триггер DML Transact-SQL | Да | Нет |
| Триггер DDL уровня базы данных Transact-SQL | Да | Нет |
| Триггер DDL уровня Transact-SQL | Да | Нет |
| Расширенные хранимые процедуры | Нет | Да |
| Очередь | Нет | Да |
| Синоним | Нет | Да |
| Тип (псевдоним и определяемый пользователем тип данных CLR) | Нет | Да |
| Коллекция схем XML | Нет | Да |
| Функция секционирования | Нет | Да |
* Таблица отслеживается как сущность ссылки только тогда, когда она ссылается на модуль Transact-SQL, пользовательский тип или коллекцию схем XML в определении вычисленного столбца, ограничения CHECK или DEFAULT ограничения.
** Пронумерованные хранимые процедуры с целочисленным значением больше 1 не отслеживаются в качестве ссылающихся или упоминаемых сущностей.
Permissions
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 ОПРЕДЕЛЕНИЕ объекта, если ссылающийся объект является объектом.
Требуется VIEW ОПРЕДЕЛЕНИЕ в базе данных, если сущность ссылается на уровне базы данных DDL-триггер.
Требуется VIEW ЛЮБОЕ ОПРЕДЕЛЕНИЕ на сервере, если сущность, ссылающаяся на уровне сервера, является триггером DDL на уровне сервера.
Examples
А. Получение списка сущностей, ссылающихся на заданную сущность
В следующем примере возвращается список сущностей текущей базы данных, которые ссылаются на указанную таблицу.
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 также используется при определении нескольких столбцов в HumanResources.Employee таблице; однако, поскольку тип не входит в определение вычисленного столбца, ограничения CHECK или DEFAULT ограничения в таблице, строки для таблицы не возвращаются 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_зависимости_выражений (Transact-SQL)