sys.dm_sql_referencing_entities (Transact-SQL)
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
Syntaxe
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 requis, sauf lorsque la classe référencée est PARTITION_FUNCTION.
schema_name.referenced_entity_name est de type 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 de type 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. Accepte 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érence. N'accepte pas la valeur Null. |
referencing_id |
int |
ID de l'entité de référence. N'accepte pas la valeur Null. |
referencing_class |
tinyint |
Classe de l'entité de référence. N'accepte pas 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 l'entité de référence. 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.
Notes
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, valeurs par défaut, tables temporaires, procédures stockées temporaires ou objets système.
Type d'entité |
Entité de référence |
Entité référencée |
---|---|---|
Table |
Oui* |
Oui |
Vue |
Oui |
Oui |
Procédure stockée Transact-SQL** |
Oui |
Oui |
Procédure stockée CLR |
Non |
Oui |
Fonction Transact-SQL définie par l'utilisateur |
Oui |
Oui |
Fonction CLR définie par l'utilisateur |
Non |
Oui |
Déclencheur CLR (DML et DDL) |
Non |
Non |
Déclencheur DML Transact-SQL |
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 |
File d'attente |
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 est suivie comme une entité de référence uniquement lorsqu'elle référence un module Transact-SQL, un type défini par l'utilisateur ou une collection de schémas XML dans la définition d'une colonne calculée, contrainte CHECK ou contrainte DEFAULT.
** 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.
Pour plus d'informations, consultez Description des dépendances SQL.
Autorisations
Requiert l'autorisation CONTROL sur l'entité référencée et l'autorisation SELECT sur sys.dm_sql_referencing_entities. Lorsque l'entité référencée est une fonction de partition, l'autorisation CONTROL sur la base de données est requise. Par défaut, l'autorisation SELECT est accordée à public.
Exemples
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 AdventureWorks2008R2;
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 type dbo.Flag est également utilisé dans la définition de plusieurs colonnes dans la table HumanResources.Employee. Toutefois, étant donné qu'il n'est pas dans la définition d'une colonne calculée, d'une contrainte CHECK ou d'une contrainte DEFAULT dans la table, aucune ligne n'est retournée pour la table HumanResources.Employee.
USE AdventureWorks2008R2;
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 ligne(s) affectée(s))
Voir aussi