sys.dm_sql_referencing_entities (Transact-SQL)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure
Restituisce una riga per ogni entità nel database corrente che fa riferimento a un'altra entità definita dall'utente in base al nome. Una dipendenza tra due entità viene creata quando un'entità, denominata entità a cui si fa riferimento, viene visualizzata per nome in un'espressione SQL persistente di un'altra entità, denominata entità di riferimento. 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. La funzione non restituisce entità negli altri database che possono fare riferimento all'entità specificata. Questa funzione deve essere eseguita nel contesto del database master perché restituisca un trigger DDL a livello di server come entità di riferimento.
È 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:
Entità associate o non associate a schema
Trigger DDL a livello di database
Trigger DDL a livello di server
Si applica a: SQL Server ( SQL Server 2008 (10.0.x) e versioni successive), database SQL.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sys.dm_sql_referencing_entities (
' schema_name.referenced_entity_name ' , ' <referenced_class> ' )
<referenced_class> ::=
{
OBJECT
| TYPE
| XML_SCHEMA_COLLECTION
| PARTITION_FUNCTION
}
Argomenti
schema_name.referenced_entity_name
Nome dell'entità a cui si fa riferimento.
schema_name
è obbligatorio tranne quando la classe a cui viene fatto riferimento è PARTITION_FUNCTION.
schema_name.referenced_entity_name
è nvarchar(517).
<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
Classe dell'entità a cui si fa riferimento. È possibile specificare solo una classe per istruzione.
<referenced_class>
è nvarchar(60).
Tabella restituita
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
referencing_schema_name | sysname | Schema a cui appartiene l'entità di riferimento. Ammette i valori Null. NULL per trigger DDL a livello di database e a livello di server. |
referencing_entity_name | sysname | Nome dell'entità di riferimento. Non ammette i valori Null. |
referencing_id | int | ID dell'entità di riferimento. Non ammette i valori Null. |
referencing_class | tinyint | Classe dell'entità di riferimento. Non ammette i valori Null. 1 = Oggetto 12 = Trigger DDL a livello di database 13 = Trigger DDL a livello di server |
referencing_class_desc | nvarchar(60) | Descrizione della classe dell'entità di riferimento. OBJECT DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER |
is_caller_dependent | bit | 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. 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. 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. 0 = L'entità a cui si fa riferimento non è dipendente dal chiamante. |
Eccezioni
In una delle seguenti condizioni, restituisce un set di risultati vuoto:
Viene specificato un oggetto di sistema.
L'entità specificata non è presente nel database corrente.
L'entità specificata non fa riferimento ad alcuna entità.
Viene passato un parametro non valido.
Restituisce un errore quando l'entità a cui si fa riferimento specificata è una stored procedure numerata.
Osservazioni:
Nella tabella seguente sono elencati i tipi di entità per i quali vengono create e gestite le informazioni sulle dipendenze. Le informazioni sulle dipendenze non vengono create né gestite per regole, impostazioni predefinite, tabelle temporanee, stored procedure temporanee o oggetti di sistema.
Tipo di entità | Entità di riferimento | Entità con riferimenti |
---|---|---|
Tabella | Sì* | Sì |
Visualizza | Sì | Sì |
Stored procedure Transact-SQL** | Sì | Sì |
stored procedure CLR | No | Sì |
Funzione transact-SQL definita dall'utente | Sì | Sì |
Funzione CLR definita dall'utente | No | Sì |
Trigger CLR (DML e DDL) | No | No |
Trigger DML Transact-SQL | Sì | No |
Trigger DDL a livello di database Transact-SQL | Sì | No |
Trigger DDL a livello di server Transact-SQL | Sì | No |
Stored procedure estese | No | Sì |
Queue | No | Sì |
Sinonimo | No | Sì |
Tipo (alias e tipo di CLR definito dall'utente) | No | Sì |
Raccolta di schemi XML | No | Sì |
Funzione di partizione | No | Sì |
* Una tabella viene rilevata come entità di riferimento solo quando fa riferimento a un modulo Transact-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.
** Le stored procedure numerate con un valore intero maggiore di 1 non vengono registrate come entità di riferimento o a cui viene fatto riferimento.
Autorizzazioni
SQL Server 2008 (10.0.x) - SQL Server 2012 (11.x)
È richiesta l'autorizzazione CONTROL per l'oggetto a cui viene fatto riferimento. Quando l'entità a cui si fa riferimento è una funzione di partizione, è necessaria l'autorizzazione CONTROL per il database.
È richiesta l'autorizzazione SELECT per sys.dm_sql_referencing_entities. Per impostazione predefinita, l'autorizzazione SELECT è concessa al ruolo public.
SQL Server 2014 (12.x) e versioni successive
Non sono richieste autorizzazioni per l'oggetto a cui viene fatto riferimento. I risultati parziali possono essere restituiti se l'utente dispone di VIEW DEFINITION solo per alcune entità di riferimento.
È richiesta l'autorizzazione VIEW DEFINITION per l'oggetto quando l'entità di riferimento è un oggetto.
È richiesta l'autorizzazione VIEW ANY DEFINITION per il database quando l'entità di riferimento è un trigger DDL a livello di database.
È richiesta l'autorizzazione VIEW ANY DEFINITION per il server quando l'entità di riferimento è un trigger DDL a livello di server.
Esempi
R. Restituzione delle entità che fanno riferimento a un'entità specificata
Nell'esempio seguente vengono restituite le entità nel database corrente che fanno riferimento alla tabella specificata.
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. Restituzione delle entità che fanno riferimento a un tipo specificato
Nell'esempio seguente vengono restituite le entità che fanno riferimento al tipo alias dbo.Flag
. Il set di risultati mostra che questo tipo è usato da due stored procedure. Il tipo viene inoltre utilizzato nella definizione di diverse colonne della HumanResources.Employee
tabella. Tuttaviadbo.Flag
, poiché il tipo non è nella definizione di una colonna calcolata, di un vincolo CHECK o di un vincolo DEFAULT nella tabella, non vengono restituite righe per la HumanResources.Employee
tabella.
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
Il set di risultati è il seguente.
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)`
Vedi anche
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)