Description des dépendances SQL

Nouveau : 5 décembre 2005

Les dépendances SQL correspondent aux références de nom utilisées dans les expressions SQL qui rendent un objet dépendant d'un autre objet. Vous pouvez obtenir toutes les dépendances de nom en interrogeant l'affichage catalogue sys.sql_dependencies. Pour chaque ligne dans sys.sql_dependencies, l'entité référencée (referenced_major_id) apparaît par nom dans une expression SQL permanente de l'objet de référence.

L'illustration ci-dessous montre un exemple de dépendance SQL.

Description d'une dépendance SQL

L'illustration présente deux objets : la procédure X et la procédure Y. La procédure X contient une expression SQL qui possède une référence de nom à la procédure Y. La procédure X est appelée « objet de référence » ou « objet dépendant », alors que la procédure Y est appelée « objet référencé » ou « objet indépendant ». Comme la procédure X dépend de la procédure Y, la procédure X échouera suite à une erreur d'exécution si la procédure Y n'existe pas. En revanche, la procédure Y n'échouera pas si la procédure X n'existe pas.

L'exemple ci-dessous montre comment la procédure stockée X peut dépendre de la procédure stockée Y.

USE tempdb
GO
CREATE PROCEDURE Y AS
SELECT * FROM sys.objects
GO
CREATE PROCEDURE X as
    EXEC Y
GO

Pour voir la dépendance de X sur Y, exécutez la requête ci-dessous.

SELECT * 
FROM  sys.sql_dependencies 
WHERE object_id = object_id('X')
   AND   referenced_major_id = object_id('Y')
   AND   referenced_minor_id = 0
   AND   class = 0;
GO

Si vous supprimez la procédure X, vous pouvez encore exécuter la procédure Y. La procédure Y est indépendante de la procédure X. Inversement, si vous supprimez la procédure Y et essayez d'exécuter la procédure X, SQL Server retourne une erreur d'exécution. La procédure X dépend de la procédure Y.

Une fois la procédure Y supprimée, la ligne correspondant à la procédure X dans l'affichage catalogue sys.sql_dependencies est également supprimée. Pour examiner ce comportement, exécutez le code ci-dessous.

USE tempdb;
GO
DROP PROCEDURE Y;
GO
SELECT * 
FROM  sys.sql_dependencies 
WHERE object_id = object_id('X')
   AND   referenced_major_id = object_id('Y')
   AND   referenced_minor_id = 0
   AND   class = 0;
GO

Vous pouvez utiliser la clause WITH SCHEMABINDING pour forcer la maintenance des dépendances. Si vous liez le schéma d'une vue, vous ne pouvez pas modifier ni supprimer la table ou les colonnes référencées de manière à entraîner la cassure de la dépendance. De même, si vous liez le schéma d'une fonction, vous ne pouvez pas modifier ni supprimer les objets et les colonnes référencés de manière à casser les dépendances de la fonction. Pour plus d'informations sur la liaison de schéma, consultez Création de fonctions définies par l'utilisateur (moteur de base de données) et Conception et mise en œuvre de vues.

ms345449.note(fr-fr,SQL.90).gifRemarque :
SQL Server 2005 ne prend pas en charge les procédures stockées ni les déclencheurs liés au schéma.

Exemples de dépendances SQL

Le tableau ci-dessous répertorie des exemples de dépendances SQL qui peuvent exister entre des objets de référence et des objets référencés.

Type d'objet de référence

Expression SQL dans une colonne de définition d'un affichage catalogue

Exemple d'entité référencée

Procédure, fonction, vue, déclencheur

sys.sql_modules

ms345449.note(fr-fr,SQL.90).gifRemarque :

Pour les déclencheurs de niveau serveur, consultez sys.server_sql_modules

Table, procédure, type

Colonne calculée

sys.computed_columns

Fonction, type, autre colonne

Définition DEFAULT

sys.default_constraints

Fonction

Contrainte CHECK

sys.check_constraints

Fonction, fonction de partition

Procédure numérotée

sys.numbered_procedure

Table, procédure, type

Fonction liée au schéma

sys.sql_modules

Collection de schémas XML

Exemples de dépendances non-SQL

Toutes les dépendances qui existent entre des objets ne sont pas des dépendances SQL. Si un objet ne possède pas d'expression SQL contenant une référence de nom à un autre objet, aucune dépendance SQL n'existe entre les deux objets. Le tableau ci-dessous répertorie certains exemples de dépendances non-SQL.

Type d'objet de référence Dépend de Description

Colonne

Table

La dépendance entre la table et ses colonnes est implicite. Cette relation est exprimée dans le catalogue système comme la clé étrangère sys.columns.object_id.

Définition DEFAULT sur une colonne, par exemple :

CREATE TABLE myTable AS

(ColA int CONSTRAINT Const1 DEFAULT 1)

Colonne. À partir de l'exemple, ColA.

Aucune dépendance SQL n'existe entre la définition DEFAULT et la colonne, car la constante Const1 par défaut ne fait pas référence à la colonne ColA par un nom. Au lieu de cela, il existe une référence de clé étrangère de sys.columns.default_object_id à l'objet de définition DEFAULT.

Voir aussi

Autres ressources

sys.sql_dependencies (Transact-SQL)
sys.sysdepends (Transact-SQL)
sp_depends (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005