2011-03-09 91 views
5

我想查找所有依赖于给定表的数据库对象,包括通过外键引用给定表的其他表。我尝试使用“sp_depends”,它给了我sprocs,视图和触发器,但不告诉我其他表具有给定表的外键。任何帮助?SQL Server - 查看所有外键依赖关系

回答

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

正是我所需要的。谢谢。 – thenoob 2011-03-09 16:48:40

1

在SSMS:右键单击您的表,然后单击"View Dependencies"

+0

我应该提到这一点,但我希望能够在SQL中完成它 - 我很可能会生成一个依赖关系的报告 – thenoob 2011-03-09 16:47:40

+0

它只显示存储过程,触发器和其他东西的依赖关系..不是外键关联 – pufos 2012-02-24 13:38:06

1

也试试这个:

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 

,最后去之前,你可以添加where OBJECT_NAME(f.parent_object_id) = 'your_table_name'看到仅依赖那张桌子。

它会打印TableName | Column name (FK) | Reference TableName | Reference Column Name

+0

This我认为是最好的答案。 – 2017-06-16 13:29:21