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_OR_COLUMN_REFERENCE_NON_SCHEMA_BOUND
  • OBJECT_OR_COLUMN_REFERENCE_SCHEMA_BOUND
  • TYPE_REFERENCE
  • XML_SCHEMA_COLLECTION_REFERENCE
  • PARTITION_FUNCTION_REFERENCE

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

Nouveau contenu :
  • Ajout d'informations concernant les dépendances de collections de schémas XML, d'alias et de types définis par l'utilisateur lorsque ces objets sont déclarés comme paramètres dans des modules Transact-SQL.
  • Ajout de la section Exemples.