sys.sql_dependencies (Transact-SQL)
Mis à jour : 12 décembre 2006
Contient une ligne pour chaque dépendance à une entité (indépendante) référencée telle qu'elle est référencée dans l'expression ou les instructions SQL qui définissent un autre objet (dépendant) de référence quelconque. La vue sys.sql_dependencies est censée assurer le suivi des dépendances par nom entre les entités. Pour chaque ligne dans sys.sql_dependencies, l'entité référencée apparaît par nom dans une expression SQL permanente de l'objet de référence. De plus, si l'objet de référence a une expression liée au schéma, la dépendance est appliquée. Pour plus d'informations, consultez Description des dépendances SQL.
Nom de la colonne | Type de données | Description |
---|---|---|
class |
tinyint |
Identifie la classe de l'entité (indépendante) référencée : 0 = Objet ou colonne (uniquement les références non liées au schéma) 1 = Objet ou colonne (uniquement les références liées au schéma) 2 = Types (uniquement les références liées au schéma) 3 = Collections de schémas XML (uniquement les références liées au schéma) 4 = Fonction de partition (uniquement les références liées au schéma) |
class_desc |
nvarchar(60) |
Description de la classe de l'entité (indépendante) référencée :
|
object_id |
int |
ID de l'objet (dépendant) de référence. |
column_id |
int |
Si l'ID du dépendant est une colonne, ID de la colonne (dépendante) de référence ; sinon, 0. |
referenced_major_id |
int |
ID de l'entité (indépendante) référencée, interprétée par la valeur de la classe, en fonction de : 0, 1 = ID d'objet de l'objet ou de la colonne. 2 = ID de type. 3 = ID de collection de schémas XML. |
referenced_minor_id |
int |
ID secondaire de l'entité (indépendante) référencée, interprétée par la valeur de la classe, comme illustré ci-dessous : Lorsque class =: 0, referenced_minor_id est un ID de colonne ou, s'il ne s'agit pas d'une colonne, a la valeur 0. 1, referenced_minor_id est un ID de colonne ou, s'il ne s'agit pas d'une colonne, a la valeur 0. Sinon, referenced_minor_id = 0. |
is_selected |
bit |
L'objet ou la colonne est sélectionné. |
is_updated |
bit |
L'objet ou la colonne est mis à jour. |
is_select_all |
bit |
L'objet est utilisé dans l'instruction SELECT *(au niveau de l'objet uniquement). |
Notes
Les dépendances sont établies pendant l'exécution de CREATE uniquement si l'entité (indépendante) référencée existe au moment où l'objet (dépendant) de référence est créé. À cause d'une résolution de noms différée, l'entité référencée ne doit pas nécessairement exister au moment de la création. Dans ce cas, aucune ligne de dépendance n'est créée. De plus, les entités référencées par des expressions ou instructions SQL dynamiques n'établissent pas de dépendances.
Si l'entité (indépendante) référencée est supprimée à l'aide de DROP, la ligne de dépendance est automatiquement supprimée. Pour rétablir la ligne de dépendance, vous devez recréer les deux, à l'aide de CREATE, dans l'ordre de dépendance correct.
Tant les dépendances liées au schéma que celles qui ne le sont pas font l'objet d'un suivi d'objets. Les contraintes CHECK, les valeurs par défaut et les références de colonnes calculées sont implicitement liées au schéma. Les dépendances de types, de collections de schémas XML et de fonctions de partition font l'objet d'un suivi uniquement pour les dépendances liées au schéma. Dans SQL Server 2005 Service Pack 1 et les versions antérieures, les paramètres définis dans une fonction Transact-SQL ou une procédure sont implicitement liés à un schéma. Par conséquent, les paramètres qui dépendent d'un type CLR défini par l'utilisateur, d'un alias ou d'une collection de schémas XML peuvent être visualisés à l'aide de l'affichage catalogue sys.sql_dependencies. Cependant, cela signifie que ces objets ne peuvent pas être renommés. Dans SQL Server 2005 Service Pack 2, les paramètres qui dépendent de ces objets sont suivis dans l'affichage catalogue uniquement si le module Transact-SQL est créé avec une liaison de schéma. Une collection de schémas XML, un alias ou un type CLR défini par l'utilisateur qui est utilisé comme paramètre dans un module non lié à un schéma peut être renommé, mais vous devrez peut-être actualiser la définition du module au moyen de sp_refreshsqlmodule.
Exemples
A. Recherche de dépendances d'une fonction spécifiée
L'exemple suivant retourne les dépendances de la fonction spécifiée. Avant d'exécuter la requête suivante, remplacez <database_name>
et <schema_name.function_name>
par des noms valides.
USE <database_name>;
GO
SELECT OBJECT_NAME(object_id) AS referencing_object_name
,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
,*
FROM sys.sql_dependencies
WHERE referenced_major_id = OBJECT_ID('<schema_name.function_name>')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);
GO
B. Recherche de contraintes CHECK qui dépendent d'un type CLR spécifié défini par l'utilisateur
Avant d'exécuter la requête suivante, remplacez <database_name>
par un nom valide et <schema
_name.data_type_name>
par un nom de type CLR défini par l'utilisateur qualifié par un schéma valide.
USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS schema_name
,OBJECT_NAME(o.parent_object_id) AS table_name
,OBJECT_NAME(o.object_id) AS constraint_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o ON o.object_id = d.object_id
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
AND class = 2 -- schema-bound references to type
AND OBJECTPROPERTY(o.object_id, 'IsCheckCnst') = 1; -- exclude non-CHECK dependencies
GO
C. Recherche de vues, fonctions et procédures stockées Transact-SQL qui dépendent d'un type CLR spécifié défini par l'utilisateur ou d'un type d'alias
La requête suivante retourne toutes les dépendances liées à un schéma dans des vues, des fonctions Transact-SQL et des procédures stockées Transact-SQL pour un type CLR défini par l'utilisateur ou un type d'alias.
USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS dependent_object_schema
,OBJECT_NAME(o.object_id) AS dependent_object_name
,o.type_desc AS dependent_object_type
,d.class_desc AS kind_of_dependency
,TYPE_NAME (d.referenced_major_id) AS type_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o
ON d.object_id = o.object_id
AND o.type IN ('FN','IF','TF', 'V', 'P')
WHERE d.class = 2 -- dependencies on types
AND d.referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
ORDER BY dependent_object_schema, dependent_object_name;
GO
Voir aussi
Référence
Affichages catalogue (Transact-SQL)
Vues de catalogue d'objets (Transact-SQL)
sp_rename (Transact-SQL)
sp_refreshsqlmodule (Transact-SQL)
Autres ressources
Implémentation de types définis par l'utilisateur
Description des dépendances SQL
Questions fréquentes sur l'interrogation des catalogues système de SQL Server
Gestion des collections de schémas XML sur le serveur
Aide et Informations
Assistance sur SQL Server 2005
Historique des modifications
Version | Historique |
---|---|
12 décembre 2006 |
|