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

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Restituisce una riga per ogni entità nel database corrente che fa riferimento a un'altra entità definita dall'utente in base al nome.Returns one row for each entity in the current database that references another user-defined entity by name. Una dipendenza tra due entità viene creata quando un'entità, denominata entità a cui si fa riferimento, viene visualizzata in base al nome in un'espressione SQL permanente di un'altra entità, detta entità di riferimento.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. Ad esempio, se un tipo definito dall'utente (UDT) è specificato come entità con riferimenti, questa funzione restituisce ogni entità definita dall'utente che nella propria definizione fa riferimento a quel tipo in base al nome.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. La funzione non restituisce entità negli altri database che possono fare riferimento all'entità specificata.The function does not return entities in other databases that may reference the specified entity. Questa funzione deve essere eseguita nel contesto del database master perché restituisca un trigger DDL a livello di server come entità di riferimento.This function must be executed in the context of the master database to return a server-level DDL trigger as a referencing entity.

È possibile usare questa funzione a gestione dinamica per creare un report sui seguenti tipi di entità del database corrente che fanno riferimento all'entità specificata:You can use this dynamic management function to report on the following types of entities in the current database that reference the specified entity:

  • Entità associate o non associate a schemaSchema-bound or non-schema-bound entities

  • Trigger DDL a livello di databaseDatabase-level DDL triggers

  • Trigger DDL a livello di serverServer-level DDL triggers

Si applica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 e versioni successive), Database SQLSQL Database.Applies to: SQL ServerSQL Server ( SQL Server 2008SQL Server 2008 and later), Database SQLSQL Database.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

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

ArgomentiArguments

schema_name.referencedentity_nameschema_name.referencedentity_name
Nome dell'entità a cui si fa riferimento.Is the name of the referenced entity.

schema_name è necessario tranne quando la classe a cui si fa riferimento è PARTITION_FUNCTION.schema_name is required except when the referenced class is PARTITION_FUNCTION.

schema_name. referenced_entity_name è di tipo nvarchar (517) .schema_name.referenced_entity_name is nvarchar(517).

< referenced_class > :: = {Object | TIPO | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION}<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
Classe dell'entità a cui si fa riferimento.Is the class of the referenced entity. È possibile specificare solo una classe per istruzione.Only one class can be specified per statement.

< referenced_class > è di tipo nvarchar(60).<referenced_class> is nvarchar(60).

Tabella restituitaTable Returned

Nome colonnaColumn name Tipo di datiData type DescrizioneDescription
referencing_schema_namereferencing_schema_name sysnamesysname Schema a cui appartiene l'entità di riferimento.Schema in which the referencing entity belongs. Ammette i valori Null.Is nullable.

NULL per trigger DDL a livello di database e a livello di server.NULL for database-level and server-level DDL triggers.
referencing_entity_namereferencing_entity_name sysnamesysname Nome dell'entità di riferimento.Name of the referencing entity. Non ammette i valori Null.Is not nullable.
referencing_idreferencing_id intint ID dell'entità di riferimento.ID of the referencing entity. Non ammette i valori Null.Is not nullable.
referencing_classreferencing_class tinyinttinyint Classe dell'entità di riferimento.Class of the referencing entity. Non ammette i valori Null.Is not nullable.

1 = Oggetto1 = Object

12 = Trigger DDL a livello di database12 = Database-level DDL trigger

13 = Trigger DDL a livello di server13 = Server-level DDL trigger
referencing_class_descreferencing_class_desc nvarchar(60)nvarchar(60) Descrizione della classe dell'entità di riferimento.Description of class of referencing entity.

OBJECTOBJECT

DATABASE_DDL_TRIGGERDATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGERSERVER_DDL_TRIGGER
is_caller_dependentis_caller_dependent bitbit Indica che la risoluzione dell'ID dell'entità a cui si fa riferimento si verifica in fase di esecuzione poiché dipende dallo schema del chiamante.Indicates the resolution of the referenced entity ID occurs at run time because it depends on the schema of the caller.

1 = L'entità di riferimento ha la possibilità di fare riferimento all'entità, tuttavia la risoluzione dell'ID dell'entità a cui si fa riferimento è dipendente dal chiamante e non può essere determinata.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. Ciò avviene solo per riferimenti a stored procedure non associati a schema, stored procedure estese o funzioni definite dall'utente chiamate all'interno di un'istruzione 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 = L'entità a cui si fa riferimento non è dipendente dal chiamante.0 = Referenced entity is not caller dependent.

EccezioniExceptions

In una delle seguenti condizioni, restituisce un set di risultati vuoto:Returns an empty result set under any of the following conditions:

  • Viene specificato un oggetto di sistema.A system object is specified.

  • L'entità specificata non è presente nel database corrente.The specified entity does not exist in the current database.

  • L'entità specificata non fa riferimento ad alcuna entità.The specified entity does not reference any entities.

  • Viene passato un parametro non valido.An invalid parameter is passed.

Restituisce un errore quando l'entità a cui si fa riferimento specificata è una stored procedure numerata.Returns an error when the specified referenced entity is a numbered stored procedure.

OsservazioniRemarks

Nella tabella seguente sono elencati i tipi di entità per i quali vengono create e gestite le informazioni sulle dipendenze.The following table lists the types of entities for which dependency information is created and maintained. Le informazioni sulle dipendenze non vengono create né gestite per regole, impostazioni predefinite, tabelle temporanee, stored procedure temporanee o oggetti di sistema.Dependency information is not created or maintained for rules, defaults, temporary tables, temporary stored procedures, or system objects.

Tipo di entitàEntity type Entità di riferimentoReferencing entity Entità con riferimentiReferenced entity
TabellaTable Sì*Yes* Yes
VisualizzaView Yes Yes
Stored procedure Transact-SQLTransact-SQL**Transact-SQLTransact-SQL stored procedure** Yes Yes
stored procedure CLRCLR stored procedure NoNo Yes
Funzione Transact-SQLTransact-SQL definita dall'utenteTransact-SQLTransact-SQL user-defined function Yes Yes
Funzione CLR definita dall'utenteCLR user-defined function NoNo Yes
Trigger CLR (DML e DDL)CLR trigger (DML and DDL) NoNo NoNo
Trigger DML Transact-SQLTransact-SQLTransact-SQLTransact-SQL DML trigger Yes NoNo
Trigger DDL Transact-SQLTransact-SQL a livello di databaseTransact-SQLTransact-SQL database-level DDL trigger Yes NoNo
Trigger DDL Transact-SQLTransact-SQL a livello di serverTransact-SQLTransact-SQL server-level DDL trigger Yes NoNo
Stored procedure esteseExtended stored procedures NoNo Yes
CodaQueue NoNo Yes
SinonimoSynonym NoNo Yes
Tipo (alias e tipo di CLR definito dall'utente)Type (alias and CLR user-defined type) NoNo Yes
Raccolta di XML SchemaXML schema collection NoNo Yes
Funzione di partizionePartition function NoNo Yes

* una tabella viene rilevata come entità di riferimento solo quando fa riferimento a un modulo Transact-SQLTransact-SQL, un tipo definito dall'utente o una raccolta di XML Schema nella definizione di una colonna calcolata, un vincolo CHECK o un vincolo DEFAULT.* 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.

** Le stored procedure numerate con un valore intero maggiore di 1 non vengono registrate come entità di riferimento o a cui viene fatto riferimento.** Numbered stored procedures with an integer value greater than 1 are not tracked as either a referencing or referenced entity.

AutorizzazioniPermissions

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)

  • È richiesta l'autorizzazione CONTROL per l'oggetto a cui viene fatto riferimento.Requires CONTROL permission on the referenced object. Quando l'entità a cui si fa riferimento è una funzione di partizione, è necessaria l'autorizzazione CONTROL per il database.When the referenced entity is a partition function, CONTROL permission on the database is required.

  • È richiesta l'autorizzazione SELECT per sys. dm_sql_referencing_entities.Requires SELECT permission on sys.dm_sql_referencing_entities. Per impostazione predefinita, l'autorizzazione SELECT è concessa al ruolo 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

  • Non sono richieste autorizzazioni per l'oggetto a cui viene fatto riferimento.Requires no permissions on the referenced object. I risultati parziali possono essere restituiti se l'utente dispone di VIEW DEFINITION solo per alcune entità di riferimento.Partial results can be returned if the user has VIEW DEFINITION on only some of the referencing entities.

  • È richiesta l'autorizzazione VIEW DEFINITION per l'oggetto quando l'entità di riferimento è un oggetto.Requires VIEW DEFINITION on the object when the referencing entity is an object.

  • È richiesta l'autorizzazione VIEW ANY DEFINITION per il database quando l'entità di riferimento è un trigger DDL a livello di database.Requires VIEW DEFINITION on the database when the referencing entity is a database-level DDL trigger.

  • È richiesta l'autorizzazione VIEW ANY DEFINITION per il server quando l'entità di riferimento è un trigger DDL a livello di server.Requires VIEW ANY DEFINITION on the server when the referencing entity is a server-level DDL trigger.

EsempiExamples

A.A. Restituzione delle entità che fanno riferimento a un'entità specificataReturning the entities that refer to a given entity

Nell'esempio seguente vengono restituite le entità nel database corrente che fanno riferimento alla tabella specificata.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. Restituzione delle entità che fanno riferimento a un tipo specificatoReturning the entities that refer to a given type

Nell'esempio seguente vengono restituite le entità che fanno riferimento al tipo alias dbo.Flag.The following example returns the entities that reference the alias type dbo.Flag. Il set di risultati mostra che questo tipo è usato da due stored procedure.The result set shows that two stored procedures use this type. Il tipo di dbo.Flag viene inoltre utilizzato nella definizione di diverse colonne nella tabella HumanResources.Employee. Tuttavia, poiché il tipo non è presente nella definizione di una colonna calcolata, di un vincolo CHECK o di un vincolo DEFAULT nella tabella, non viene restituita alcuna riga per la tabella 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  

Set di risultati: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)`  

Vedere ancheSee 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)