2011-03-09 51 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