2011-03-09 5 views
5

Je souhaite trouver tous les objets db qui dépendent d'une table donnée, y compris les autres tables qui référencent la table donnée via des clés étrangères. J'ai essayé d'utiliser "sp_depends" et il me donne les sprocs, les vues, et les déclencheurs, mais ne me dit pas quelles autres tables ont des clés étrangères à la table donnée. De l'aide?SQL Server - afficher toutes les dépendances de clé étrangère

Répondre

9
select OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id) 
    from sys.foreign_keys 
    where referenced_object_id = object_id('SchemaName.TableName') 
+0

Exactement ce dont j'avais besoin. Merci. – thenoob

1

Dans SSMS: faites un clic droit de votre table et cliquez sur "View Dependencies"

+0

Je devrais avoir mentionné cela, mais je veux être capable de le faire en SQL - Je vais probablement générer un rapport de dépendances – thenoob

+0

il montre seulement les dépendances des procédures stockées, des déclencheurs et d'autres choses .. pas de dépendance de clé étrangère – pufos

1

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 la dernière GO vous pouvez ajouter where OBJECT_NAME(f.parent_object_id) = 'your_table_name' pour voir la dépendance seulement pour cette table.

Il va imprimer TableName | Column name (FK) | Reference TableName | Reference Column Name

+0

est la meilleure réponse, je pense. –

Questions connexes