sys.dm_sql_referencing_entities (Transact-SQL)sys.dm_sql_referencing_entities (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Возвращает одну строку для каждой сущности текущей базы данных, которая ссылается на имя какой-либо другой определенной пользователем сущности.Returns one row for each entity in the current database that references another user-defined entity by name. Зависимость между двумя сущностями создается, когда одна сущность, называемая упоминаемой сущностью, отображается по имени в сохраненном выражении SQL другой сущности, называемой ссылающейся сущностью.A dependency between two entities is created when one entity, called the referenced entity, appears by name in a persisted SQL expression of another entity, called the referencing entity. Например, если в качестве упоминаемой сущности, выступает определяемый пользователем тип (UDT), то данная функция возвращает список всех определяемых пользователем сущностей, ссылающихся в своих определениях на имя указанного определяемого пользователем типа.For example, if a user-defined type (UDT) is specified as the referenced entity, this function returns each user-defined entity that reference that type by name in its definition. Функция не возвращает список сущностей других баз данных, ссылающихся на указанную сущность.The function does not return entities in other databases that may reference the specified entity. Данная функция предназначена для выполнения в контексте базы данных master и возвращает триггер DDL уровня сервера как ссылающаяся сущность.This function must be executed in the context of the master database to return a server-level DDL trigger as a referencing entity.

Данная динамическая административная функция может быть использована для отображения списка сущностей текущей базы данных, ссылающихся на заданную сущность и имеющих следующие типы:You can use this dynamic management function to report on the following types of entities in the current database that reference the specified entity:

  • сущности, как связанные со схемой, так и не связанные;Schema-bound or non-schema-bound entities

  • триггеры DDL уровня базы данных;Database-level DDL triggers

  • триггеры DDL уровня сервера.Server-level DDL triggers

Применимо к: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 и более поздних версий), База данных SQLSQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 and later), База данных SQLSQL Database.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

sys.dm_sql_referencing_entities (  
    ' schema_name.referenced_entity_name ' , ' <referenced_class> ' )  
  
<referenced_class> ::=  
{  
    OBJECT  
  | TYPE  
  | XML_SCHEMA_COLLECTION  
  | PARTITION_FUNCTION  
}  

АргументыArguments

schema_name.referencedentity_nameschema_name.referencedentity_name
Имя упоминаемой сущности.Is the name of the referenced entity.

schema_name является обязательным, кроме случаев, когда упоминаемый класс PARTITION_FUNCTION.schema_name is required except when the referenced class is PARTITION_FUNCTION.

schema_name. referenced_entity_name имеет тип nvarchar (517) .schema_name.referenced_entity_name is nvarchar(517).

< referenced_class > :: = {Object | ВВЕДИТЕ | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION}<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
Класс упоминаемой сущности.Is the class of the referenced entity. В одной инструкции может быть указан только один класс.Only one class can be specified per statement.

< referenced_class > имеет тип nvarchar(60).<referenced_class> is nvarchar(60).

Возвращаемая таблицаTable Returned

Имя столбцаColumn name Тип данныхData type ОписаниеDescription
referencing_schema_namereferencing_schema_name sysnamesysname Схема, которой принадлежит ссылающаяся сущность.Schema in which the referencing entity belongs. Допускает значение NULL.Is nullable.

Значение NULL для триггеров DDL уровня базы данных или сервера.NULL for database-level and server-level DDL triggers.
referencing_entity_namereferencing_entity_name sysnamesysname Имя ссылающейся сущности.Name of the referencing entity. Не допускает значение NULL.Is not nullable.
referencing_idreferencing_id intint Идентификатор ссылающейся сущности.ID of the referencing entity. Не допускает значение NULL.Is not nullable.
referencing_classreferencing_class tinyinttinyint Класс ссылающейся сущности.Class of the referencing entity. Не допускает значение NULL.Is not nullable.

1 = объект1 = Object

12 = триггер DDL уровня базы данных12 = Database-level DDL trigger

13 = триггер DDL уровня сервера13 = Server-level DDL trigger
referencing_class_descreferencing_class_desc nvarchar(60)nvarchar(60) Описание класса ссылающейся сущности.Description of class of referencing entity.

OBJECTOBJECT

DATABASE_DDL_TRIGGERDATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGERSERVER_DDL_TRIGGER
is_caller_dependentis_caller_dependent битbit Указывает разрешение идентификатора упоминаемой сущности, полученного во время выполнения (так как он зависит от схемы вызывающего объекта).Indicates the resolution of the referenced entity ID occurs at run time because it depends on the schema of the caller.

Значение 1 означает, что ссылающаяся сущность может ссылаться на данный объект. При этом разрешение упоминаемой сущности зависит от вызывающего объекта и не может быть определено.1 = The referencing entity has the potential to reference the entity; however, resolution of the referenced entity ID is caller dependent and cannot be determined. Данная ситуация возможна только при вызове в инструкции EXECUTE не связанной со схемой ссылки на хранимую процедуру, расширенную хранимую процедуру или определяемую пользователем функцию.This occurs only for non-schema-bound references to a stored procedure, extended stored procedure, or user-defined function called in an EXECUTE statement.

Значение 0 означает, что упоминаемая сущность не зависит от вызывающего объекта.0 = Referenced entity is not caller dependent.

ИсключенияExceptions

Возвращает пустой результирующий набор, если выполняется любое из следующих условий.Returns an empty result set under any of the following conditions:

  • Указан системный объект.A system object is specified.

  • Указанная сущность не существует в текущей базе данных.The specified entity does not exist in the current database.

  • Указанная сущность не ссылается ни на какие сущности.The specified entity does not reference any entities.

  • Передан недопустимый параметр.An invalid parameter is passed.

Возвращает ошибку, если заданная упоминаемая сущность является пронумерованной хранимой процедурой.Returns an error when the specified referenced entity is a numbered stored procedure.

RemarksRemarks

В следующей таблице перечислены типы сущностей, для которых созданы и обновляются данные о зависимостях.The following table lists the types of entities for which dependency information is created and maintained. Данные о зависимостях не создаются и не обновляются для правил, значений по умолчанию, временных таблиц, временных хранимых процедур и системных объектов.Dependency information is not created or maintained for rules, defaults, temporary tables, temporary stored procedures, or system objects.

Тип сущностиEntity type Ссылающаяся сущностьReferencing entity Упоминаемая сущностьReferenced entity
TableTable Да*Yes* ДаYes
ПросмотрView ДаYes ДаYes
Хранимая процедура Transact-SQLTransact-SQL**Transact-SQLTransact-SQL stored procedure** ДаYes ДаYes
Хранимая процедура CLRCLR stored procedure НетNo ДаYes
Определяемая пользователем функция Transact-SQLTransact-SQLTransact-SQLTransact-SQL user-defined function ДаYes ДаYes
Определяемая пользователем функция CLRCLR user-defined function НетNo ДаYes
Триггер CLR (DML и DDL)CLR trigger (DML and DDL) НетNo НетNo
Триггер DML Transact-SQLTransact-SQLTransact-SQLTransact-SQL DML trigger ДаYes НетNo
Триггер DDL Transact-SQLTransact-SQL уровня базы данныхTransact-SQLTransact-SQL database-level DDL trigger ДаYes НетNo
Триггер DDL Transact-SQLTransact-SQL уровня сервераTransact-SQLTransact-SQL server-level DDL trigger ДаYes НетNo
Расширенные хранимые процедурыExtended stored procedures НетNo ДаYes
ОчередьQueue НетNo ДаYes
СинонимSynonym НетNo ДаYes
Тип (псевдоним и определяемый пользователем тип данных CLR)Type (alias and CLR user-defined type) НетNo ДаYes
Коллекция схем XMLXML schema collection НетNo ДаYes
Функция секционированияPartition function НетNo ДаYes

* таблица обрабатывается как ссылающаяся сущность, только если она ссылается на модуль Transact-SQLTransact-SQL, определяемый пользователем тип или коллекцию схем XML в определении вычисляемого столбца, ограничения CHECK или ограничения по УМОЛЧАНИю.* A table is tracked as a referencing entity only when it references a Transact-SQLTransact-SQL module, user-defined type, or XML schema collection in the definition of a computed column, CHECK constraint, or DEFAULT constraint.

** Пронумерованные хранимые процедуры с целочисленным значением больше 1 не отслеживаются в качестве ссылающихся или упоминаемых сущностей.** Numbered stored procedures with an integer value greater than 1 are not tracked as either a referencing or referenced entity.

РазрешенияPermissions

SQL Server 2008SQL Server 2008 - SQL Server 2012 (11.x)SQL Server 2012 (11.x)- SQL Server 2012 (11.x)SQL Server 2012 (11.x)

  • Необходимо разрешение CONTROL для указанного объекта.Requires CONTROL permission on the referenced object. Если упоминаемая сущность является функцией секционирования, необходимо разрешение CONTROL на базу данных.When the referenced entity is a partition function, CONTROL permission on the database is required.

  • Необходимо разрешение SELECT на представление sys. dm_sql_referencing_entities.Requires SELECT permission on sys.dm_sql_referencing_entities. Разрешение SELECT по умолчанию предоставляется роли public.By default, SELECT permission is granted to public.

SQL Server 2014 (12.x)SQL Server 2014 (12.x) - SQL ServerSQL Server- SQL ServerSQL Server

  • Не требуются какие-либо разрешения на указанный объект.Requires no permissions on the referenced object. Частичные результаты могут быть возвращены, если пользователь имеет разрешение VIEW DEFINITION лишь на некоторые из указываемых сущностей.Partial results can be returned if the user has VIEW DEFINITION on only some of the referencing entities.

  • Необходимо разрешение VIEW DEFINITION на объект, если ссылающаяся сущность является объектом.Requires VIEW DEFINITION on the object when the referencing entity is an object.

  • Необходимо разрешение VIEW DEFINITION на базу данных, если ссылающаяся сущность является триггером DDL уровня базы данных.Requires VIEW DEFINITION on the database when the referencing entity is a database-level DDL trigger.

  • Требуется разрешение VIEW ANY DEFINITION на уровне сервера, если ссылающаяся сущность является триггером DDL уровня сервера.Requires VIEW ANY DEFINITION on the server when the referencing entity is a server-level DDL trigger.

ПримерыExamples

A.A. Получение списка сущностей, ссылающихся на заданную сущностьReturning the entities that refer to a given entity

В следующем примере возвращается список сущностей текущей базы данных, которые ссылаются на указанную таблицу.The following example returns the entities in the current database that refer to the specified table.

USE AdventureWorks2012;  
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. Получение списка сущностей, ссылающихся на заданный типReturning the entities that refer to a given type

В следующем примере возвращается список сущностей, ссылающихся на псевдоним типа dbo.Flag.The following example returns the entities that reference the alias type dbo.Flag. Результирующий набор показывает, что этот тип используется двумя хранимыми процедурами.The result set shows that two stored procedures use this type. Тип dbo.Flag также используется в определении нескольких столбцов в таблице HumanResources.Employee; Однако, поскольку тип не находится в определении вычисляемого столбца, ограничения CHECK или ограничения по УМОЛЧАНИю в таблице, для таблицы HumanResources.Employee не возвращаются никакие строки.The dbo.Flag type is also used in the definition of several columns in the HumanResources.Employee table; however, because the type is not in the definition of a computed column, CHECK constraint, or DEFAULT constraint in the table, no rows are returned for the HumanResources.Employee table.

USE AdventureWorks2012;  
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  

Ниже приводится результирующий набор.Here is the result set.

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)`  

См. также статьюSee Also

sys.dm_sql_referenced_entities (Transact-SQL) sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)sys.sql_expression_dependencies (Transact-SQL)