Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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)`