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

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoSQL Data Warehouse do Azure nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Retorna uma linha para cada entidade do banco de dados atual que faz referência a outra entidade definida pelo usuário por nome.Returns one row for each entity in the current database that references another user-defined entity by name. Uma dependência entre duas entidades é criada quando uma entidade, chamada a entidade referenciada, aparece por nome em uma expressão SQL persistente de outra entidade, chamada a entidade de referência.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. Por exemplo, se um UDT (tipo definido pelo usuário) for especificado como entidade referenciada, essa função retornará cada entidade definida pelo usuário que referencia aquele tipo pelo nome em sua definição.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. A função não retorna entidades em outros bancos de dados que podem fazer referência à entidade especificada.The function does not return entities in other databases that may reference the specified entity. Essa função precisa ser executada no contexto do banco de dados mestre para retornar um gatilho DDL no nível do servidor como entidade de referência.This function must be executed in the context of the master database to return a server-level DDL trigger as a referencing entity.

Você pode usar essa função de gerenciamento dinâmico para relatar os seguintes tipos de entidades do banco de dados atual que fazem referência à entidade especificada:You can use this dynamic management function to report on the following types of entities in the current database that reference the specified entity:

  • Entidades associadas a esquema ou entidades não associadas a esquemaSchema-bound or non-schema-bound entities

  • Gatilhos DDL no nível do banco de dadosDatabase-level DDL triggers

  • Gatilhos DDL no nível do servidorServer-level DDL triggers

Aplica-se a: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 a SQL Server 2017SQL Server 2017), Banco de Dados SQLSQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017), Banco de Dados SQLSQL Database.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

schema_name.referencedentity_nameschema_name.referencedentity_name
É o nome da entidade referenciada.Is the name of the referenced entity.

schema_name é necessária, exceto quando a classe referenciada é a PARTITION_FUNCTION.schema_name is required except when the referenced class is PARTITION_FUNCTION.

schema_name.referenced_entity_name está nvarchar(517) .schema_name.referenced_entity_name is nvarchar(517).

< Referenced_class > :: = {objeto | TIPO | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION}<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
É a classe da entidade referenciada.Is the class of the referenced entity. Apenas uma classe pode ser especificada por instrução.Only one class can be specified per statement.

< referenced_class > está nvarchar(60).<referenced_class> is nvarchar(60).

Tabela retornadaTable Returned

Nome da colunaColumn name Tipo de dadosData type DescriçãoDescription
referencing_schema_namereferencing_schema_name sysnamesysname Esquema ao qual a entidade de referência pertence.Schema in which the referencing entity belongs. Permite valor nulo.Is nullable.

NULL para nível de banco de dados e gatilhos DDL no nível do servidor.NULL for database-level and server-level DDL triggers.
referencing_entity_namereferencing_entity_name sysnamesysname Nome da entidade de referência.Name of the referencing entity. Não permite valor nulo.Is not nullable.
referencing_idreferencing_id intint ID da entidade de referência.ID of the referencing entity. Não permite valor nulo.Is not nullable.
referencing_classreferencing_class tinyinttinyint Classe da entidade de referência.Class of the referencing entity. Não permite valor nulo.Is not nullable.

1 = Objeto1 = Object

12 = Gatilho DDL no nível do banco de dados12 = Database-level DDL trigger

13 - Gatilho DDL no nível do servidor13 = Server-level DDL trigger
referencing_class_descreferencing_class_desc nvarchar(60)nvarchar(60) Descrição da classe da entidade de referência.Description of class of referencing entity.

OBJECTOBJECT

DATABASE_DDL_TRIGGERDATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGERSERVER_DDL_TRIGGER
is_caller_dependentis_caller_dependent bitbit Indica que a resolução da ID da entidade referenciada ocorre em tempo de execução por depender do esquema do chamador.Indicates the resolution of the referenced entity ID occurs at run time because it depends on the schema of the caller.

1 = A entidade de referência tem o potencial de fazer referência à entidade. No entanto, a resolução da ID da entidade referenciada depende do chamador e não pode ser determinada.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. Isso ocorre apenas com relação a referências não associadas a esquema em procedimento armazenado, procedimento armazenado estendido ou função definida pelo usuário chamados em uma instrução 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 = A entidade referenciada não é dependente do chamador.0 = Referenced entity is not caller dependent.

ExceçõesExceptions

Retorna um conjunto de resultados vazio em qualquer uma das seguintes condições:Returns an empty result set under any of the following conditions:

  • Um objeto de sistema é especificado.A system object is specified.

  • A entidade especificada não existe no banco de dados atual.The specified entity does not exist in the current database.

  • A entidade especificada não faz referência a nenhuma entidade.The specified entity does not reference any entities.

  • Um parâmetro inválido é passado.An invalid parameter is passed.

Retorna um erro quando a entidade referenciada especificada é um procedimento armazenado numerado.Returns an error when the specified referenced entity is a numbered stored procedure.

ComentáriosRemarks

A tabela a seguir lista os tipos de entidades para os quais as informações de dependência são criadas e mantidas.The following table lists the types of entities for which dependency information is created and maintained. As informações de dependência não são criadas nem mantidas para regras, padrões, tabelas temporárias, procedimentos armazenados temporários ou objetos do sistema.Dependency information is not created or maintained for rules, defaults, temporary tables, temporary stored procedures, or system objects.

Tipo de entidadeEntity type Entidade de referênciaReferencing entity Entidade referenciadaReferenced entity
TabelaTable Sim*Yes* SimYes
ExibirView SimYes SimYes
Procedimento armazenado Transact-SQLTransact-SQL**Transact-SQLTransact-SQL stored procedure** SimYes SimYes
procedimento armazenado CLRCLR stored procedure NãoNo SimYes
Função Transact-SQLTransact-SQL definida pelo usuárioTransact-SQLTransact-SQL user-defined function SimYes SimYes
Função CLR definida pelo usuárioCLR user-defined function NãoNo SimYes
Gatilho CLR (DML e DDL)CLR trigger (DML and DDL) NãoNo NãoNo
Gatilho DML Transact-SQLTransact-SQLTransact-SQLTransact-SQL DML trigger SimYes NãoNo
Gatilho DDL no nível do banco de dados Transact-SQLTransact-SQLTransact-SQLTransact-SQL database-level DDL trigger SimYes NãoNo
Gatilho DDL no nível do servidor Transact-SQLTransact-SQLTransact-SQLTransact-SQL server-level DDL trigger SimYes NãoNo
Procedimentos armazenados estendidosExtended stored procedures NãoNo SimYes
FilaQueue NãoNo SimYes
SinônimoSynonym NãoNo SimYes
Tipo (tipo de alias e tipo de dados CLR definido pelo usuário)Type (alias and CLR user-defined type) NãoNo SimYes
Coleção de esquemas XMLXML schema collection NãoNo SimYes
Função PartitionPartition function NãoNo SimYes

* Uma tabela é controlada como entidade de referência somente quando ela faz referência a um Transact-SQLTransact-SQL módulo, tipo definido pelo usuário ou coleção de esquemas XML na definição de uma coluna computada, restrição CHECK ou restrição padrão.* 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.

** Os procedimentos armazenados numerados com um valor inteiro maior que 1 não são controlados como entidade que faz referência nem como entidade referenciada.** Numbered stored procedures with an integer value greater than 1 are not tracked as either a referencing or referenced entity.

PermissõesPermissions

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)

  • Requer a permissão CONTROL no objeto referenciado.Requires CONTROL permission on the referenced object. Quando a entidade referenciada é uma função de partição, a permissão CONTROL é exigida no banco de dados.When the referenced entity is a partition function, CONTROL permission on the database is required.

  • Requer permissão SELECT na DM sql_referencing_entities.Requires SELECT permission on sys.dm_sql_referencing_entities. Por padrão, a permissão SELECT é concedida a público.By default, SELECT permission is granted to public.

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

  • Não requer permissão no objeto referenciado.Requires no permissions on the referenced object. Os resultados parciais poderão ser retornados se o usuário tiver VIEW DEFINITION em apenas algumas das entidades de referência.Partial results can be returned if the user has VIEW DEFINITION on only some of the referencing entities.

  • Requer VIEW DEFINITION no objeto quando a entidade de referência for um objeto.Requires VIEW DEFINITION on the object when the referencing entity is an object.

  • Requer VIEW DEFINITION no banco de dados quando a entidade de referência for um gatilho DDL no nível de banco de dados.Requires VIEW DEFINITION on the database when the referencing entity is a database-level DDL trigger.

  • Requer VIEW ANY DEFINITION no servidor quando a entidade de referência for um gatilho DDL no nível de servidor.Requires VIEW ANY DEFINITION on the server when the referencing entity is a server-level DDL trigger.

ExemplosExamples

A.A. Retornando as entidades que fazem referência a uma determinada entidadeReturning the entities that refer to a given entity

O exemplo a seguir retorna as entidades do banco de dados atual que fazem referência à tabela especificada.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.B. Retornando as entidades que fazem referência a um determinado tipoReturning the entities that refer to a given type

O exemplo a seguir retorna as entidades que referenciam o tipo de alias dbo.Flag.The following example returns the entities that reference the alias type dbo.Flag. O conjunto de resultados mostra que dois procedimentos armazenados usam esse tipo.The result set shows that two stored procedures use this type. O dbo.Flag tipo também é usado na definição de várias colunas de HumanResources.Employee tabela; no entanto, porque o tipo não for na definição de uma coluna computada, restrição CHECK ou restrição padrão na tabela, nenhuma linha será retornada para o HumanResources.Employeetabela.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  

Aqui está o conjunto de resultados.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)`  

Consulte tambémSee 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)