168 votes

Comment trouver des dépendances de clé étrangère dans SQL Server?

Comment puis-je trouver toutes les dépendances de clé étrangère sur une colonne particulière?

Quelles sont les différentes alternatives (graphiquement dans SSMS, requêtes / vues dans SQL Server, outils de base de données tiers, code dans .NET)?

303voto

John Sansom Points 20087

La requête suivante vous aidera à démarrer. Il répertorie toutes les relations de clé étrangère dans la base de données actuelle.

 SELECT
    K_Table = FK.TABLE_NAME,
    FK_Column = CU.COLUMN_NAME,
    PK_Table = PK.TABLE_NAME,
    PK_Column = PT.COLUMN_NAME,
    Constraint_Name = C.CONSTRAINT_NAME
FROM
    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK
    ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK
    ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU
    ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
INNER JOIN (
            SELECT
                i1.TABLE_NAME,
                i2.COLUMN_NAME
            FROM
                INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
            INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2
                ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
            WHERE
                i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
           ) PT
    ON PT.TABLE_NAME = PK.TABLE_NAME
 

Vous pouvez également afficher les relations sous forme graphique dans SQL Server Management studio au sein de Database Diagrams.

101voto

Andrija Cacanovic Points 3518

essayez: sp_help [table_name]

vous obtiendrez toutes les informations sur la table, y compris toutes les clés étrangères

39voto

Timothy Walden Points 126

Si vous prévoyez de supprimer ou de renommer une table ou d'une colonne de trouver uniquement des clés étrangères dépendances pourrait ne pas être suffisante.

Font référence à des tables n'est pas connecté avec la clé étrangère - Vous aurez aussi besoin de recherche pour le référencement de tableaux qui pourraient ne pas être connecté avec la clé étrangère (j'ai vu beaucoup de bases de données avec une mauvaise conception qui n'ont pas les clés étrangères défini, mais qui n'ont). La Solution pourrait être à la recherche pour le nom de la colonne dans tous les tableaux et regarder pour les mêmes colonnes.

D'autres objets de base de données – c'est sans doute un peu hors sujet, mais si vous avez été la recherche de toutes les références qu'il est également important de vérifier les objets dépendants.

GUI Tools – Essayez de SSMS "de Trouver des objets ou des outils tels que ApexSQL de Recherche (outil gratuit, qui s'intègre dans SSMS) pour identifier tous les objets qui en dépendent, y compris les tableaux connecté avec une clé étrangère.

6voto

TheTXI Points 24470

Ce que j'aime vraiment utiliser s'appelle SQL Dependency Tracker de Red Gate Software . Vous pouvez placer tout objet de base de données tel que des tables, des procédures stockées, etc.

Donne une très bonne représentation graphique des dépendances dans votre schéma.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X