sys.dm_sql_referencing_entities (Transact-SQL)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Retorna uma linha para cada entidade do banco de dados atual que faz referência a outra entidade definida pelo usuário por nome. Uma dependência entre duas entidades é criada quando uma entidade, denominada entidade referenciada, é exibida pelo nome em uma expressão SQL persistente de outra entidade, denominada entidade de referência. 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. A função não retorna entidades em outros bancos de dados que podem fazer referência à entidade especificada. 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.
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:
Entidades associadas a esquema ou entidades não associadas a esquema
Gatilhos DDL no nível do banco de dados
Gatilhos DDL no nível do servidor
Aplica-se a: SQL Server (SQL Server 2008 (10.0.x) e posterior), Banco de Dados SQL.
Convenções de sintaxe de Transact-SQL
Sintaxe
sys.dm_sql_referencing_entities (
' schema_name.referenced_entity_name ' , ' <referenced_class> ' )
<referenced_class> ::=
{
OBJECT
| TYPE
| XML_SCHEMA_COLLECTION
| PARTITION_FUNCTION
}
Argumentos
schema_name.referenced_entity_name
É o nome da entidade referenciada.
schema_name
é necessário, exceto quando a classe referenciada é PARTITION_FUNCTION.
schema_name.referenced_entity_name
é nvarchar(517).
<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
É a classe da entidade referenciada. Apenas uma classe pode ser especificada por instrução.
<referenced_class>
é nvarchar(60).
Tabela retornada
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
referencing_schema_name | sysname | Esquema ao qual a entidade de referência pertence. Permite valor nulo. NULL para nível de banco de dados e gatilhos DDL no nível do servidor. |
referencing_entity_name | sysname | Nome da entidade de referência. Não permite valor nulo. |
referencing_id | int | ID da entidade de referência. Não permite valor nulo. |
referencing_class | tinyint | Classe da entidade de referência. Não permite valor nulo. 1 = Objeto 12 = Gatilho DDL no nível do banco de dados 13 - Gatilho DDL no nível do servidor |
referencing_class_desc | nvarchar(60) | Descrição da classe de entidade de referência. OBJECT DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER |
is_caller_dependent | bit | Indica que a resolução da ID da entidade referenciada ocorre em tempo de execução por depender do esquema do chamador. 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. 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. 0 = A entidade referenciada não é dependente do chamador. |
Exceções
Retorna um conjunto de resultados vazio em qualquer uma das seguintes condições:
Um objeto de sistema é especificado.
A entidade especificada não existe no banco de dados atual.
A entidade especificada não faz referência a nenhuma entidade.
Um parâmetro inválido é passado.
Retorna um erro quando a entidade referenciada especificada é um procedimento armazenado numerado.
Comentários
A tabela a seguir lista os tipos de entidades para os quais as informações de dependência são criadas e mantidas. 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.
Tipo de entidade | Entidade de referência | Entidade referenciada |
---|---|---|
Tabela | Sim* | Sim |
Exibir | Yes | Sim |
Procedimento armazenado Transact-SQL** | Sim | Yes |
procedimento armazenado CLR | No | Sim |
Funções Transact-SQL definidas por usuário | Sim | Yes |
Função CLR definida pelo usuário | No | Sim |
Gatilho CLR (DML e DDL) | No | Não |
Gatilho DML do Transact-SQL | Yes | No |
Gatilho DDL de nível de banco de dados do Transact-SQL | Yes | No |
Gatilho DDL de nível de servidor do Transact-SQL | Yes | Não |
Procedimentos armazenados estendidos | Não | Yes |
Fila | No | Yes |
Sinônimo | No | Yes |
Tipo (tipo de alias e tipo de dados CLR definido pelo usuário) | No | Yes |
Coleção de esquemas XML | No | Yes |
Função de partição | No | Yes |
* Uma tabela é controlada como entidade de referência apenas quando se refere a um módulo Transact-SQL, tipo definido pelo usuário ou coleção de esquemas XML na definição de uma coluna computada, restrição CHECK ou restrição DEFAULT.
** 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.
Permissões
SQL Server 2008 (10.0.x) - SQL Server 2012 (11.x)
Requer a permissão CONTROL no objeto referenciado. Quando a entidade referenciada é uma função de partição, a permissão CONTROL é exigida no banco de dados.
Requer permissão SELECT no sys.dm_sql_referencing_entities. Por padrão, a permissão SELECT é concedida a público.
SQL Server 2014 (12.x) e posterior
Não requer permissão no objeto referenciado. Os resultados parciais poderão ser retornados se o usuário tiver VIEW DEFINITION em apenas algumas das entidades de referência.
Requer VIEW DEFINITION no objeto quando a entidade de referência for um objeto.
Requer VIEW DEFINITION no banco de dados quando a entidade de referência for um gatilho DDL no nível de banco de dados.
Requer VIEW ANY DEFINITION no servidor quando a entidade de referência for um gatilho DDL no nível de servidor.
Exemplos
R. Retornando as entidades que fazem referência a uma determinada entidade
O exemplo a seguir retorna as entidades do banco de dados atual que fazem referência à tabela especificada.
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. Retornando as entidades que fazem referência a um determinado tipo
O exemplo a seguir retorna as entidades que referenciam o tipo de alias dbo.Flag
. O conjunto de resultados mostra que dois procedimentos armazenados usam esse tipo. O dbo.Flag
tipo também é usado na definição de várias colunas na HumanResources.Employee
tabela; no entanto, como o tipo não está na definição de uma coluna computada, restrição CHECK ou restrição DEFAULT na tabela, nenhuma linha é retornada para a HumanResources.Employee
tabela.
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
Veja a seguir o conjunto de resultados.
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)`
Confira também
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)