sys.dm_sql_referencing_entities (Transact-SQL)
Возвращает одну строку для каждой сущности текущей базы данных, которая ссылается на имя какой-либо другой определенной пользователем сущности. Зависимость между двумя сущностями создается, когда имя некоторой сущности, называемой упоминаемой сущностью, встречается в составе постоянного выражения языка SQL другой сущности, называемой ссылающейся сущностью. Например, если в качестве упоминаемой сущности, выступает определяемый пользователем тип (UDT), то данная функция возвращает список всех определяемых пользователем сущностей, ссылающихся в своих определениях на имя указанного определяемого пользователем типа. Функция не возвращает список сущностей других баз данных, ссылающихся на указанную сущность. Данная функция предназначена для выполнения в контексте базы данных master и возвращает триггер DDL уровня сервера как ссылающаяся сущность.
Данная динамическая административная функция может быть использована для отображения списка сущностей текущей базы данных, ссылающихся на заданную сущность и имеющих следующие типы:
сущности, как связанные со схемой, так и не связанные;
триггеры DDL уровня базы данных;
триггеры DDL уровня сервера.
Синтаксис
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).
<упоминаемый_класс> ::= { 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 означает, что упоминаемая сущность не зависит от вызывающего объекта. |
Исключения
Возвращает пустой результирующий набор, если выполняется любое из следующих условий.
Указан системный объект.
Указанная сущность не существует в текущей базе данных.
Указанная сущность не ссылается ни на какие сущности.
Передан недопустимый параметр.
Возвращает ошибку, если заданная упоминаемая сущность является пронумерованной хранимой процедурой.
Замечания
В следующей таблице перечислены типы сущностей, для которых созданы и обновляются данные о зависимостях. Данные о зависимостях не создаются и не обновляются для правил, значений по умолчанию, временных таблиц, временных хранимых процедур и системных объектов.
Тип сущности |
Ссылающаяся сущность |
Упоминаемая сущность |
---|---|---|
Таблица |
Да* |
Да |
Представление |
Да |
Да |
Хранимая процедура 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 не отслеживаются в качестве ссылающихся или упоминаемых сущностей.
Дополнительные сведения см. в разделе Основные сведения о зависимостях SQL.
Разрешения
Необходимо разрешение CONTROL на упоминаемую сущность и разрешение SELECT на представление sys.dm_sql_referencing_entities. Если упоминаемая сущность является функцией секционирования, необходимо разрешение CONTROL на базу данных. Разрешение SELECT по умолчанию предоставляется роли public.
Примеры
А. Получение списка сущностей, ссылающихся на заданную сущность
В следующем примере возвращается список сущностей текущей базы данных, которые ссылаются на указанную таблицу.
USE AdventureWorks2008R2;
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
Б. Получение списка сущностей, ссылающихся на заданный тип
В следующем примере возвращается список сущностей, ссылающихся на псевдоним типа dbo.Flag. Результирующий набор показывает, что этот тип используется двумя хранимыми процедурами. Тип dbo.Flag также используется в определениях некоторых столбцов таблицы HumanResources.Employee. Однако для таблицы HumanResources.Employee не выдается никаких строк, так как указанный тип не содержится в определении вычисляемого столбца, ограничения CHECK или DEFAULT для данной таблицы.
USE AdventureWorks2008R2;
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)