5 votes

SQL Server - voir toutes les dépendances des clés étrangères

Je veux trouver tous les objets de la base de données qui dépendent d'une table donnée, y compris les autres tables qui font référence à la table donnée par le biais de clés étrangères. J'ai essayé d'utiliser "sp_depends" et cela me donne les sprocs, les vues et les triggers mais ne me dit pas quelles autres tables ont des clés étrangères à la table donnée. Avez-vous de l'aide ?

9voto

Joe Stefanelli Points 72874
select OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id)
    from sys.foreign_keys
    where referenced_object_id = object_id('SchemaName.TableName')

2voto

Enull Points 256

L'ingrédient clé est la vue sys.foreign_keys. J'ai trouvé une requête qui pourrait être utile comme exemple dans un article de mssqltips.com... Identifier toutes vos clés étrangères dans une base de données SQL Server

1voto

Tim Schmelter Points 163781

Dans SSMS : cliquez à droite sur votre table et cliquez sur "View Dependencies"

1voto

pufos Points 728

Essayez aussi ceci :

USE AUX; <- use your database name
GO
SELECT f.name AS ForeignKey,
SCHEMA_NAME(f.SCHEMA_ID) SchemaName,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName,
SCHEMA_NAME(o.SCHEMA_ID) ReferenceSchemaName,
OBJECT_NAME(f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id
GO

et avant le dernier GO vous pouvez ajouter where OBJECT_NAME(f.parent_object_id) = 'your_table_name' pour ne voir que les dépendances de cette table.

Il imprimera TableName | Column name (FK) | Reference TableName | Reference Column Name

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