找到所有相关表格

Swi*_*tly 3 sql-server-2012

我有一个包含大约1000个表的数据库,我需要找到与特定表相关的所有表,比如说客户表.我该怎么办?

Joe*_*ano 10

当您要求查找与特定表相关的所有表时,我假设您要求所有对您的"客户"表具有外键引用的表.这与之前的Stack Overflow问题密切相关.以下使用系统目录视图的查询应该可以解决问题:

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 
Run Code Online (Sandbox Code Playgroud)

MSDN sys.foreign_key_columns