Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Retourne une ligne pour chaque entité dans la base de données actuelle qui référence une autre entité définie par l'utilisateur par nom. Une dépendance entre deux entités est créée lorsqu’une entité, appelée entité référencée, apparaît par nom dans une expression SQL rendue persistante d’une autre entité, appelée entité de référence. Par exemple, si un type défini par l'utilisateur est spécifié comme entité référencée, cette fonction retourne chaque entité définie par l'utilisateur qui référence ce type par nom dans sa définition. La fonction ne retourne pas les entités dans d'autres bases de données qui peuvent référencer l'entité spécifiée. Cette fonction doit être exécutée dans le contexte de la base de données master pour retourner un déclencheur DDL au niveau du serveur comme une entité de référence.
Vous pouvez utiliser cette fonction de gestion dynamique pour établir un rapport sur les types d'entités suivants dans la base de données actuelle qui référencent l'entité spécifiée :
Entités liées au schéma ou non liées au schéma
Déclencheurs DDL au niveau de la base de données
Déclencheurs DDL au niveau du serveur
S’applique à : SQL Server ( SQL Server 2008 (10.0.x) et versions ultérieures), SQL Database.
Conventions de la syntaxe Transact-SQL
Syntax
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 Nom de l’entité référencée.
schema_name est obligatoire, sauf lorsque la classe référencée est PARTITION_FUNCTION.
schema_name.referenced_entity_name est nvarchar(517).
<referenced_class> ::= { OBJECT | TYPE | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION } Classe de l’entité référencée. Une seule classe peut être spécifiée par instruction.
<referenced_class> est nvarchar(60).
Table retournée
| Nom de la colonne | Type de données | Description |
|---|---|---|
| referencing_schema_name | sysname | Schéma auquel l'entité de référence appartient. Peut accepter la valeur Null. NULL pour les déclencheurs DDL au niveau de la base de données et au niveau du serveur. |
| referencing_entity_name | sysname | Nom de l’entité de référencement. Ne peut pas accepter la valeur Null. |
| referencing_id | int | ID de l'entité de référence. Ne peut pas accepter la valeur Null. |
| referencing_class | tinyint | Classe de l'entité de référence. Ne peut pas accepter la valeur Null. 1 = objet 12 = déclencheur DDL au niveau de la base de données 13 = déclencheur DDL au niveau du serveur |
| referencing_class_desc | nvarchar(60) | Description de la classe de référencement d’entité. OBJET DATABASE_DDL_TRIGGER SERVER_DDL_TRIGGER |
| is_caller_dependent | bit | Indique que la résolution de l'ID d'entité référencée se produit au moment de l'exécution, car elle dépend du schéma de l'appelant. 1 = l'entité de référence a la possibilité de référencer l'entité ; toutefois, la résolution de l'ID d'entité référencée dépend de l'appelant et ne peut pas être déterminée. Cela se produit uniquement pour les références non liées au schéma à une procédure stockée, procédure stockée étendue ou fonction définie par l'utilisateur appelée dans une instruction EXECUTE. 0 = l'entité référencée ne dépend pas de l'appelant. |
Exceptions
Retourne un jeu de résultats vide sous chacune des conditions suivantes :
Un objet système est spécifié.
L'entité spécifiée n'existe pas dans la base de données active.
L'entité spécifiée ne référence pas d'autres entités.
Un paramètre non valide est passé.
Retourne une erreur lorsque l'entité référencée spécifiée est une procédure stockée numérotée.
Remarques
Le tableau suivant répertorie les types des entités pour lesquelles les informations de dépendance sont créées et gérées. Les informations de dépendance ne sont pas créées ni gérées pour les règles, les valeurs par défaut, les tables temporaires, les procédures stockées temporaires ou les objets système.
| Type d'entité | Entité de référence | Entité référencée |
|---|---|---|
| Table | Oui* | Oui |
| Afficher | Oui | Oui |
| Procédure stockée Transact-SQL** | Oui | Oui |
| Procédure stockée CLR | Non | Oui |
| Fonctions Transact-SQL définies par l’utilisateur | Oui | Oui |
| Fonction CLR définie par l’utilisateur | Non | Oui |
| Déclencheur CLR (DML et DDL) | Non | Non |
| Déclencheur Transact-SQL DML | Oui | Non |
| Déclencheur DDL au niveau de la base de données Transact-SQL | Oui | Non |
| Déclencheur DDL au niveau du serveur Transact-SQL | Oui | Non |
| Procédures stockées étendues | Non | Oui |
| Queue | Non | Oui |
| Synonyme | Non | Oui |
| Type (alias et type CLR défini par l'utilisateur) | Non | Oui |
| Collection de schémas XML | Non | Oui |
| Fonction de partition | Non | Oui |
* Une table n’est suivie comme entité référentielle que lorsqu’elle fait référence à un module Transact-SQL, un type défini par l’utilisateur ou une collection de schéma XML dans la définition d’une colonne calculée, d’une contrainte CHECK ou DEFAULT d’une contrainte.
** Les procédures stockées numérotées avec une valeur entière supérieure à 1 ne sont pas suivies en tant qu'entité de référence ou référencée.
Permissions
SQL Server 2008 (10.0.x) - SQL Server 2012 (11.x)
Requiert l'autorisation CONTROL sur l'objet référencé. Lorsque l'entité référencée est une fonction de partition, l'autorisation CONTROL sur la base de données est requise.
Nécessite l’autorisation SELECT sur sys.dm_sql_referencing_entities. Par défaut, l'autorisation SELECT est accordée à public.
SQL Server 2014 (12.x) et versions ultérieures
Ne requiert aucune autorisation sur l'objet référencé. Des résultats partiels peuvent être retournés si l’utilisateur n’a VIEW DÉFINITION que sur certaines entités référencantes.
Nécessite VIEW DÉFINITION sur l’objet lorsque l’entité référentielle est un objet.
Nécessite VIEW DÉFINITION sur la base de données lorsque l’entité référentielle est un déclencheur DDL au niveau de la base de données.
Nécessite VIEW TOUTE DÉFINITION sur le serveur lorsque l’entité référentissante est un déclencheur DDL au niveau serveur.
Examples
A. Retour des entités qui font référence à une entité donnée
L'exemple suivant retourne les entités dans la base de données active qui font référence à la table spécifiée.
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. Retour des entités qui font référence à un type donné
L'exemple suivant retourne les entités qui référencent le type d'alias dbo.Flag. Le jeu de résultats montre que deux procédures stockées utilisent ce type. Le dbo.Flag type est également utilisé dans la définition de plusieurs colonnes dans la HumanResources.Employee table ; cependant, comme le type ne figure pas dans la définition d’une colonne calculée, de la contrainte CHECK ou DEFAULT de la contrainte dans la table, aucune ligne n’est retournée pour la HumanResources.Employee table.
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
Voici l'ensemble des résultats.
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)`
Voir aussi
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_dépendances_d’expression (Transact-SQL)