Partilhar via


sys.dm_sql_referencing_entities (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Devolve uma linha para cada entidade na base de dados atual que faz referência a outra entidade definida pelo utilizador pelo nome. Uma dependência entre duas entidades é criada quando uma entidade, chamada entidade referenciada, aparece pelo nome numa expressão SQL persistente de outra entidade, chamada entidade referenciadora. Por exemplo, se um tipo definido pelo utilizador (UTT) for especificado como entidade referenciada, esta função devolve cada entidade definida pelo utilizador que faz referência a esse tipo pelo nome na sua definição. A função não devolve entidades noutras bases de dados que possam referenciar a entidade especificada. Esta função deve ser executada no contexto da base de dados mestre para devolver um gatilho DDL ao nível do servidor como entidade referenciadora.

Pode usar esta função de gestão dinâmica para reportar os seguintes tipos de entidades na base de dados atual que referenciam a entidade especificada:

  • Entidades limitadas ou não vinculadas ao esquema

  • Disparadores DDL ao nível da base de dados

  • Gatilhos DDL ao nível do servidor

Aplica-se a: SQL Server (SQL Server 2008 (10.0.x) e posteriores), Base de Dados SQL.

Transact-SQL convenções de sintaxe

Sintaxe

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

Arguments

schema_name.referenced_entity_name É o nome da entidade referida.

schema_name é obrigatório, exceto quando a classe referida é 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 afirmação.

<referenced_class> é Nvarchar (60).

Tabela retornada

Nome da coluna Tipo de dados Description
referencing_schema_name sysname Esquema ao qual pertence a entidade referenciadora. É anulável.

NULL para gatilhos DDL ao nível da base de dados e servidor.
referencing_entity_name sysname Nome da entidade referenciadora. Não é anulável.
referencing_id int ID da entidade referenciadora. Não é anulável.
referencing_class tinyint Classe da entidade referenciadora. Não é anulável.

1 = Objeto

12 = Gatilho DDL ao nível da base de dados

13 = Gatilho DDL ao nível do servidor
referencing_class_desc nvarchar(60) Descrição da classe da entidade referenciadora.

OBJECT

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER
is_caller_dependent bit Indica que a resolução do ID da entidade referenciada ocorre em tempo de execução porque depende do esquema do chamador.

1 = A entidade referenciadora tem potencial para referenciar a entidade; no entanto, a resolução do ID da entidade referenciada depende do chamador e não pode ser determinada. Isto ocorre apenas para referências não ligadas ao esquema a um procedimento armazenado, procedimento armazenado estendido ou função definida pelo utilizador chamada numa instrução EXECUT.

0 = A entidade referenciada não depende do chamador.

Exceptions

Devolve um conjunto de resultados vazio sob qualquer uma das seguintes condições:

  • É especificado um objeto do sistema.

  • A entidade especificada não existe na base de dados atual.

  • A entidade especificada não faz referência a nenhuma entidade.

  • É passado um parâmetro inválido.

Devolve um erro quando a entidade referenciada especificada é um procedimento armazenado numerado.

Observações

A tabela seguinte lista os tipos de entidades para as quais a informação de dependência é criada e mantida. A informação de dependência não é criada nem mantida para regras, predefinidos, tabelas temporárias, procedimentos armazenados temporários ou objetos do sistema.

Tipo de entidade Entidade de referência Entidade referenciada
Table Sim* Yes
View Yes Yes
Transact-SQL procedimento armazenado** Yes Yes
Procedimento armazenado CLR Não Yes
Transact-SQL função definida pelo utilizador Yes Yes
Função definida pelo utilizador CLR Não Yes
Gatilho CLR (DML e DDL) Não Não
Transact-SQL Gatilho DML Yes Não
Transact-SQL gatilho DDL ao nível da base de dados Yes Não
Transact-SQL gatilho DDL ao nível do servidor Yes Não
Procedimentos armazenados ampliados Não Yes
Fila Não Yes
Synonym Não Yes
Tipo (alias e tipo CLR definido pelo utilizador) Não Yes
Coleção de esquema XML Não Yes
Função de partição Não Yes

* Uma tabela é acompanhada como entidade de referência apenas quando faz referência a um módulo Transact-SQL, tipo definido pelo utilizador ou coleção de esquema XML na definição de uma coluna computada, restrição CHECK ou restrição DEFAULT.

** Procedimentos armazenados numerados com valor inteiro superior a 1 não são rastreados nem como entidade referenciada nem como entidade referenciada.

Permissions

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

  • Requer permissão CONTROL no objeto referenciado. Quando a entidade referenciada é uma função de partição, a permissão CONTROL no banco de dados é necessária.

  • Requer permissão SELECT para sys.dm_sql_referencing_entities. Por padrão, a permissão SELECT é concedida ao público.

SQL Server 2014 (12.x) e posteriores

  • Não requer permissões sobre o objeto referenciado. Resultados parciais podem ser devolvidos se o utilizador tiver DEFINIÇÃO de VISUALIZAÇÃO apenas em algumas das entidades referenciadoras.

  • Requer VIEW DEFINITION no objeto quando a entidade referenciadora é um objeto.

  • Requer VIEW DEFINITION na base de dados quando a entidade referenciadora é um gatilho DDL ao nível da base de dados.

  • Requer VER QUALQUER DEFINIÇÃO no servidor quando a entidade referenciadora é um gatilho DDL ao nível do servidor.

Examples

A. Devolver as entidades que se referem a uma dada entidade

O exemplo seguinte devolve as entidades na base de dados atual que se referem à 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. Devolvendo as entidades que se referem a um dado tipo

O exemplo seguinte devolve as entidades que referenciam o tipo dbo.Flagde alias . O conjunto de resultados mostra que dois procedimentos armazenados usam este 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, da restrição CHECK ou da restrição DEFAULT na tabela, não são retornadas linhas 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  

Aqui está 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)`  

Ver também

sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_dependências_expressões (Transact-SQL)