sys.dm_sql_referencing_entities (Transact-SQL)

Применимо к: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)