2012-12-27 38 views
3

我有一個大約有1000個表的數據庫,我需要找到與特定表相關的所有表,比如說客戶表。我如何繼續?查找所有相關的表

+0

信息架構視圖是有幫助的:http://msdn.microsoft.com/en-us/library/ms186778.aspx – rene

回答

10

當您要求查找與特定表相關的所有表時,我假設您要求所有具有對「客戶」表的外鍵引用的表。這與previous Stack Overflow question密切相關。使用該系統目錄視圖下面的查詢應該做的伎倆:

select t.name as TableWithForeignKey, fk.constraint_column_id as FK_columns , c.name as ForeignKeyColumn 
    from sys.foreign_key_columns as fk 
     inner join sys.tables as t on fk.parent_object_id = t.object_id 
     inner join sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id 
    where fk.referenced_object_id = (select object_id from sys.tables where name = 'customers') 
    order by TableWithForeignKey, ForeignKeyColumn 

MSDN sys.foreign_key_columns

+0

顯然我的數據庫沒有包含任何外鍵,所以我不得不使用'name%'。你的代碼工作,當我嘗試與另一個數據庫,所以感謝您的幫助:) – Swiftly