sys.dm_sql_referencing_entities (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance
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
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 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. Autorise 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. 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 référencement d’entité. OBJECT 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, 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 |
Affichage | 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 |
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 entité de référence uniquement lorsqu’elle fait 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, d’une contrainte CHECK ou d’une 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.
autorisations
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 a l'autorisation VIEW DEFINITION uniquement sur certaines entités de référence.
Requiert VIEW DEFINITION sur l'objet lorsque l'entité de référence est un objet.
Requiert VIEW ANY DEFINITION sur la base de données lorsque l'entité de référence est un déclencheur DDL de niveau base de données.
Requiert VIEW ANY DEFINITION sur le serveur lorsque l'entité de référence est un déclencheur DDL au niveau du serveur.
Exemples
R. 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 de la HumanResources.Employee
table . Toutefois, étant donné que le type 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 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 le jeu de 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_expression_dependencies (Transact-SQL)